{"id":186,"date":"2008-01-05T22:36:43","date_gmt":"2008-01-05T21:36:43","guid":{"rendered":"http:\/\/blog.m-ri.de\/index.php\/2008\/01\/05\/die-unsitte-aus-performancegruenden-virtuallock-zu-verwenden\/"},"modified":"2008-01-04T18:56:11","modified_gmt":"2008-01-04T17:56:11","slug":"die-unsitte-aus-performancegruenden-virtuallock-zu-verwenden","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2008\/01\/05\/die-unsitte-aus-performancegruenden-virtuallock-zu-verwenden\/","title":{"rendered":"Die Unsitte aus Performancegr\u00fcnden VirtualLock zu verwenden"},"content":{"rendered":"<p>Immer wieder tauchen in den Foren die Frage auf wie man vermeiden kann, das Seiten durch den Windows Memory Manager ausgelagert werden k\u00f6nnen.<\/p>\n<p>Ursache f\u00fcr diese Frage ist der vermeintliche Glaube von einigen Entwicklern, dass man durch Vermeiden\/Verbieten der Auslagerung von Speicherseiten, die Performance eines Programmes erh\u00f6hen k\u00f6nnte.<\/p>\n<p>Das ist nat\u00fcrlich Unfug!\u00a0<\/p>\n<p>Grunds\u00e4tzlich sollte man die Dokumentation von <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/aa366895(VS.85).aspx\">VirtualLock <\/a>beachten:<\/p>\n<blockquote><p><strong><em>Locking pages into memory may degrade the performance of the system by reducing the available RAM and forcing the system to swap out other critical pages to the paging file.<\/em><\/strong> Each version of Windows has a limit on the maximum number of pages a process can lock. This limit is intentionally small to avoid severe performance degradation. Applications that need to lock larger numbers of pages must first call the <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms686234(VS.85).aspx\">SetProcessWorkingSetSize<\/a> function to increase their minimum and maximum working set sizes. The maximum number of pages that a process can lock is equal to the number of pages in its minimum working set minus a small overhead.<\/p><\/blockquote>\n<p>Der Memory Manager wei\u00df weitaus besser, was auszulagern ist und was nicht. Letzten Endes werden nur Seiten ausgelagert, die in der letzten Zeit nicht ben\u00f6tigt wurden. Ist ein Programm aktiv und nutzt den Speicher auch, besteht keine Gefahr, dass dessen Seiten ausgelagert werden.<\/p>\n<p>Umgekehrt schr\u00e4nkt VirtualLock den Spielraum des Memory Managers ein. Werden Sie sinnlos im Speicher festgenagelt, dann m\u00fcssen aktive Seiten ausgelagert werden und dass senkt meistens die Performance des gesamten Systems, weil nun unn\u00f6tigerweise ausgelagert werden muss. Was n\u00fctzt es, wenn das eigene Programm noch einigerma\u00dfen performant ist, aber ein Taskwechsel in den Explorer dann Minuten dauert?<br \/>\nWie schon gesagt: Oft ist der Effekt genau entgegengesetzt!<\/p>\n<p>Meine Erfahrung, selbst bei sehr speicherhungrigen Programmen ist:<br \/>\nJe weniger man Windows in die Quere kommt um so besser verh\u00e4lt sich das gesamte System.<\/p>\n<p>Und bevor man sich an Funktionen wie <em>VirtualLock<\/em> versucht, sollteman evtl. eher den Speicherhunger seiner Programme eind\u00e4mmen, oder den Performancemonitor bem\u00fchen, um heraus zu bekommen wo wirklich der Bottleneck ist. Die Perfomancewerte, die am meisten Auskunft \u00fcber das Auslagern von Seiten geben sind im Abschnitt\u00a0Memory (Speicher): <em>Pages Input\/sec <\/em>(<em>Seitenlesevorg\u00e4nge\/s<\/em>) und <em>Pages Output\/Sec <\/em>(<em>Seiten-Schreibvorg\u00e4nge\/s<\/em>). (Man beachte die inkonsistente \u00dcbersetzung \ud83d\ude09 !)<br \/>\n<em>Pages Output\/Sec <\/em>(<em>Seiten-Schreibvorg\u00e4nge\/s<\/em>) ist mit Abstand der beste Indikator um Speicherkanppheit und Auslagerungsproblemen aufzusp\u00fcren!<\/p>\n<p>Als Anmerkung sei noch hinzugef\u00fcgt, dass VirtualLock Windows nicht hindert die Seiten dennoch auszulagern. Mehr Infos dazu hier, wobei dieser Artikel genauso auf die falsche Anwendung von VirtualLock hinweist:<br \/>\n<a href=\"http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2007\/11\/06\/5924058.aspx\">http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2007\/11\/06\/5924058.aspx<\/a><\/p>\n<p>Ein guter Artikel \u00fcber das Windows Speichermanagement findet sich noch hier:<br \/>\n<a href=\"http:\/\/members.shaw.ca\/bsanders\/WindowsGeneralWeb\/RAMVirtualMemoryPageFileEtc.htm\">http:\/\/members.shaw.ca\/bsanders\/WindowsGeneralWeb\/RAMVirtualMemoryPageFileEtc.htm<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Immer wieder tauchen in den Foren die Frage auf wie man vermeiden kann, das Seiten durch den Windows Memory Manager ausgelagert werden k\u00f6nnen. Ursache f\u00fcr diese Frage ist der vermeintliche Glaube von einigen Entwicklern, dass man durch Vermeiden\/Verbieten der Auslagerung von Speicherseiten, die Performance eines Programmes erh\u00f6hen k\u00f6nnte. Das ist nat\u00fcrlich Unfug!\u00a0 Grunds\u00e4tzlich sollte man &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2008\/01\/05\/die-unsitte-aus-performancegruenden-virtuallock-zu-verwenden\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDie Unsitte aus Performancegr\u00fcnden VirtualLock zu verwenden\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30,3,2],"tags":[370,74,61],"class_list":["post-186","post","type-post","status-publish","format-standard","hentry","category-c","category-programmieren","category-windows-api","tag-c","tag-unsitten","tag-winapi"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=186"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/186\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}