Est-il possible d'indiquer au gestionnaire de mémoire virtuelle Windows de sortir un processus particulier du swap?
La situation dans laquelle je me trouve souvent utilise normalement environ 50% de ma RAM pour tous les programmes normaux, l'un étant en particulier un IDE pour une cible intégrée, ainsi que le débogueur associé.
Ensuite, je laisse un processus gourmand en mémoire en cours d'exécution - par exemple, WireShark ou quelque chose qui accumule des données sur un week-end, tout est échangé - comme il se doit. Une fois le gros processus terminé, la plupart des processus sont laissés en swap.
Ensuite, le sporadique fait une pause pour permuter le processus en arrière en causant des problèmes avec le débogueur, probablement en raison de problèmes de synchronisation dans les communications entre IDE et le débogueur matériel. Le contrôle du périphérique cible peut donc être sporadique jusqu'à ce que suffisamment de tentatives aient remis les données de débogage dans l'EDI hors du swap.
Réponses:
KerrekSB a développé un outil spécial à cet effet:
/programming//a/2940209/684229
Il est disponible sur GiTHUB avec des binaires: https://github.com/louisdx/unpage
Pendant l'exécution, vous obtenez beaucoup d'erreurs "Impossible de lire un octet de 0x .... 000, erreur 299 (0 octet lu)", mais ce n'est pas un problème, l'outil fonctionne très bien.
la source
After the big process is finished, most processes are left in swap.
. Il est donc vraisemblable qu'il a déjà mis fin au «processus gourmand en mémoire».if (meminfo.Protect > 50) { std::cerr << meminfo.Protect << " - " << PAGE_GUARD << std::endl; }
juste avant laReadProcessMemory
ligne. PAGE_GUARD est 256 et j'ai obtenu 260 avec les pages en échec. Il est donc possible de se débarrasser des erreurs. Quelqu'un avec des connaissances en c ++ et en pagination doit lire le bit PAGE_GUARD.Vous pouvez utiliser Process Lasso pour donner à un processus une priorité de page Mémoire :
Process Lasso a deux versions: gratuite et commerciale (18,95 $ avec essai).
la source