{"id":5796,"date":"2016-06-03T16:46:48","date_gmt":"2016-06-03T15:46:48","guid":{"rendered":"http:\/\/blog.capdata.fr\/?p=5796"},"modified":"2022-11-21T17:01:32","modified_gmt":"2022-11-21T16:01:32","slug":"notifications-detat-de-la-memoire-sous-windows-low-steady-high","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/","title":{"rendered":"Notifications d&#8217;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F5796&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F5796&#038;title=Notifications%20d%E2%80%99%C3%A9tat%20de%20la%20m%C3%A9moire%20sous%20windows%20%3A%20LOW%2C%20STEADY%2C%20HIGH\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Notifications%20d%E2%80%99%C3%A9tat%20de%20la%20m%C3%A9moire%20sous%20windows%20%3A%20LOW%2C%20STEADY%2C%20HIGH&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F5796\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>Avant de commencer un article un peu profond sur Resource Monitor, j&#8217;ai d\u00fb faire quelques tests sur le fonctionnement des \u00e9tats m\u00e9moire et des notifications\u00a0dans Windows.<\/p>\n<p>Windows propose depuis sa version XP\/2003 et \u00e0 travers une API, \u00e0 toute application qui le souhaite de questionner l&#8217;\u00e9tat de la m\u00e9moire physique, ceci afin de pouvoir prendre des d\u00e9cisions en connaissance de l&#8217;\u00e9tat du syst\u00e8me, par exemple v\u00e9rifier qu&#8217;il reste de la m\u00e9moire avant de proc\u00e9der \u00e0 une allocation significative, etc&#8230;<\/p>\n<p>L&#8217;API consiste en 2 primitives win32: <a href=\"https:\/\/msdn.microsoft.com\/fr-fr\/library\/windows\/desktop\/aa366541(v=vs.85).aspx\">CreateMemoryResourceNotification<\/a> et <a href=\"https:\/\/msdn.microsoft.com\/fr-fr\/library\/windows\/desktop\/aa366799%28v=vs.85%29.aspx?f=255&amp;MSPPError=-2147217396\">QueryMemoryResourceNotification<\/a>.<\/p>\n<p>On sait que SQL Server depuis la version 2005 <a href=\"https:\/\/blogs.msdn.microsoft.com\/slavao\/2005\/02\/19\/sqloss-memory-manager-responding-to-memory-pressure\/\">fait usage de ce m\u00e9canisme<\/a> pour r\u00e9pondre \u00e0 une pression m\u00e9moire externe (<em>IndicatorsSystem<\/em>)\u00a0ou interne (<em>Indicatorsprocess<\/em>). Dans les faits de nombreuses applications utilisent ce m\u00e9canisme. Si je regarde sur mon PC quels sont les processus qui d\u00e9clarent un objet du noyau qui permet d&#8217;interroger ces notifications (via <a href=\"https:\/\/technet.microsoft.com\/en-us\/sysinternals\/processexplorer.aspx?f=255&#038;MSPPError=-2147217396\">ProcessExplorer<\/a>):<\/p>\n<p><a href=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/lowmemkernelobjects.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-5798\" title=\"lowmemkernelobjects\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/lowmemkernelobjects.png\" alt=\"\" width=\"541\" height=\"374\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/lowmemkernelobjects.png 541w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/lowmemkernelobjects-300x207.png 300w\" sizes=\"auto, (max-width: 541px) 100vw, 541px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>SQL Server est loin d&#8217;\u00eatre tout seul \u00e0 \u00e9couter.<\/p>\n<p>On parlera de comment ces notifications sont g\u00e9r\u00e9es par SQL Server dans un second article. Dans celui-ci, on va s&#8217;int\u00e9resser au fonctionnement basique de ces notifications dans Windows.<\/p>\n<h2>Interroger l&#8217;\u00e9tat en utilisant l&#8217;API:<\/h2>\n<p>Avant de pouvoir demander \u00e0 windows quel est l&#8217;\u00e9tat de la m\u00e9moire, il faut initialiser un objet par type d&#8217;\u00e9tat que l&#8217;on souhaite tester : un pour HIGH et un pour LOW. Ces objets sont de type MEMORY_RESOURCE_NOTIFICATION_TYPE, un ENUM qui ne contient donc que deux valeurs possibles, et on utilisera <em>CreateMemoryResourceNotification<\/em> pour les initialiser:<\/p>\n<pre name=\"code\" class=\"c\">\t\r\nHANDLE LMhdl, HMhdl ;\r\nMEMORY_RESOURCE_NOTIFICATION_TYPE Low = LowMemoryResourceNotification;\r\nMEMORY_RESOURCE_NOTIFICATION_TYPE High = HighMemoryResourceNotification;\r\nBOOL StateLow, StateHigh;\r\n(...)\r\n\/\/ Create des hdl pour le QMRN --------------------------------------------------------------------\r\nLMhdl = CreateMemoryResourceNotification(Low);\r\nif (LMhdl == NULL)\r\n{\r\n\tprintf_s(\"Erreur lors de CreateMemoryResourceNotification(Low), lasterrror:%d\",GetLastError()) ;\r\n\treturn -1;\r\n}\r\n\r\nHMhdl = CreateMemoryResourceNotification(High);\r\nif (HMhdl == NULL)\r\n{\r\n\tprintf_s(\"Erreur lors de CreateMemoryResourceNotification(High), lasterrror:%d\",GetLastError()) ;\r\n\treturn -1;\r\n}<\/pre>\n<p>Ensuite on interroge les deux \u00e9tats :<\/p>\n<pre name=\"code\" class=\"c\">if (QueryMemoryResourceNotification(HMhdl,&amp;StateHigh)) {\r\n\tif (StateHigh) {\r\n\t\tprintf_s(\"- L'etat systeme courant est : HIGH\\n\");\r\n\t} \r\n} else {\r\n\tprintf_s(\"Erreur lors de QueryMemoryResourceNotification(High), lasterrror:%d\",GetLastError()) ;\r\n}\r\nif (QueryMemoryResourceNotification(LMhdl,&amp;StateLow)) {\r\n\tif (StateLow) {\r\n\t\tprintf_s(\"- L'etat systeme courant est : LOW\\n\");\r\n\t} \r\n\r\n} else {\r\n\tprintf_s(\"Erreur lors de QueryMemoryResourceNotification(Low), lasterrror:%d\",GetLastError()) ;\r\n}<\/pre>\n<p>Il existe un troisi\u00e8me \u00e9tat qui se trouve entre HIGH et LOW : STEADY. Par d\u00e9faut, on sait que les valeurs de seuil sont <strong>64Mb<\/strong> libre pour LOW et HIGH = 3 x LOW, soit <strong>192Mb<\/strong>. Lorsqu&#8217;il reste moins de 192Mb mais plus de 64Mb, la m\u00e9moire est \u00e0 l&#8217;\u00e9tat STEADY. Il n&#8217;y a pas de notification sp\u00e9cifique pour cet \u00e9tat, il est simplement d\u00e9duit lorsque les deux tests (HIGH et LOW) retournent <em>False<\/em>:<\/p>\n<pre name=\"code\" class=\"c\">if ((!StateHigh) &amp;&amp; (!StateLow))\r\n{\r\n\tprintf_s(\"- L'etat systeme courant est : STEADY \\n\");\r\n}<\/pre>\n<p>Lorsque Windows entre dans l&#8217;\u00e9tat STEADY, on remarque qu&#8217;il va devenir de plus en plus agressif sur la pagination, et plus on s&#8217;approche de la valeur de LOW, plus il va tout mettre en oeuvre pour s&#8217;en \u00e9carter quitte \u00e0 paginer ce qui se trouve dans le Paged Pool, donc une partie du syst\u00e8me, notamment certains drivers 3rd party et tout le registre, en plus des processus en usermode. Dans les faits Windows est tellement protectionniste qu&#8217;il est difficile de le forcer \u00e0 descendre sous les 64Mb de libre en m\u00e9moire physique, tant qu&#8217;il lui reste de la place dans son fichier d&#8217;\u00e9change.<\/p>\n<p>Le source complet de querymemrn.cpp:<\/p>\n<p><em><strong>Disclaimer<\/strong> : \u00e9videmment ce programme est un exemple et ne doit pas \u00eatre d\u00e9ploy\u00e9 en environnement de production. Il a \u00e9t\u00e9 \u00e9crit pour illustrer un cas de figure et non pour \u00eatre utilis\u00e9 comme un outil. <\/em><\/p>\n<pre name=\"code\" class=\"c\">\t\r\n\/\/ querymemrn.cpp : Defines the entry point for the console application.\r\n\/\/ On rappelle par defaut:\r\n\/\/ - LowMemoryThreshold (DWORD) = 64Mb\r\n\/\/ - HighMemoryThreshold (DWORD) = 3 * LMT = 192Mb\r\n\/\/ - entre les deux, Steady state.\r\n\/\/ Possibilite de modifier les valeurs sous HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\SessionManager\\MemoryManagement\r\n\/\/\r\n\r\n#include \"stdafx.h\"\r\n#include \"stdio .h\"\r\n#include \"stdlib.h\"\r\n#include \"windows .h\"\r\n\r\n#define headeroutput \"# ----------------------------------------------------------------------------\"\r\n#define ONEMEGABYTE 1048576\r\n\r\nint _tmain(int argc, _TCHAR* argv[])\r\n{\r\n\t\/\/ Variables --------------------------------------------------------------------------------------\r\n\tMEMORYSTATUSEX msx;\r\n\tHANDLE LMhdl, HMhdl ;\r\n\tMEMORY_RESOURCE_NOTIFICATION_TYPE Low = LowMemoryResourceNotification, High = HighMemoryResourceNotification;\r\n\tBOOL StateLow, StateHigh;\r\n\r\n\t\/\/ En t\u00eate ----------------------------------------------------------------------------------------\r\n\tprintf_s(\"\\n%s\\n\",headeroutput);\r\n\tprintf_s(\"USAGE : querymemrn : Verifie si l'etat de la memoire physique est LOW ou HIGH\\n\\n\");\r\n\r\n\tmsx.dwLength = sizeof(msx);\t\/\/ Initialisation de la struct\r\n\tif (!GlobalMemoryStatusEx(&amp;msx)){\r\n\t\tprintf_s(\"Erreur lors de l apel a GlobalMemoryStatusEx, lasterror:%d\",GetLastError());\r\n\t\treturn -1;\r\n\t} else {\r\n\t\tprintf_s(\"- Memoire physique totale (Mb): %llu\\n\",msx.ullTotalPhys\/ONEMEGABYTE);\r\n\t\tprintf_s(\"- Memoire physique libre  (Mb): %llu\\n\",msx.ullAvailPhys\/ONEMEGABYTE);\r\n\t\tprintf_s(\"- Swap total  (Mb): %llu\\n\",msx.ullTotalPageFile\/ONEMEGABYTE);\r\n\t\tprintf_s(\"- Swap libre  (Mb): %llu\\n\",msx.ullAvailPageFile\/ONEMEGABYTE);\r\n\t}\r\n\r\n\t\/\/ Create des hdl pour le QMRN --------------------------------------------------------------------\r\n\tLMhdl = CreateMemoryResourceNotification(Low);\r\n\tif (LMhdl == NULL)\r\n\t{\r\n\t\tprintf_s(\"Erreur lors de CreateMemoryResourceNotification(Low), lasterrror:%d\",GetLastError()) ;\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tHMhdl = CreateMemoryResourceNotification(High);\r\n\tif (LMhdl == NULL)\r\n\t{\r\n\t\tprintf_s(\"Erreur lors de CreateMemoryResourceNotification(High), lasterrror:%d\",GetLastError()) ;\r\n\t\treturn -1;\r\n\t}\r\n\r\n\tif (QueryMemoryResourceNotification(HMhdl,&amp;StateHigh)) {\r\n\t\tif (StateHigh) {\r\n\t\t\tprintf_s(\"- L'etat systeme courant est : HIGH\\n\");\r\n\t\t} \r\n\t} else {\r\n\t\tprintf_s(\"Erreur lors de QueryMemoryResourceNotification(High), lasterrror:%d\",GetLastError()) ;\r\n\t}\r\n\r\n\tif (QueryMemoryResourceNotification(LMhdl,&amp;StateLow)) {\r\n\t\tif (StateLow) {\r\n\t\t\tprintf_s(\"- L'etat systeme courant est : LOW\\n\");\r\n\t\t} \r\n\r\n\t} else {\r\n\t\tprintf_s(\"Erreur lors de QueryMemoryResourceNotification(Low), lasterrror:%d\",GetLastError()) ;\r\n\t}\r\n\r\n\t\/\/ Ni l'un ni l'autre alors state = STEADY\r\n\tif ((!StateHigh) &amp;&amp; (!StateLow))\r\n\t{\r\n\t\tprintf_s(\"- L'etat systeme courant est : STEADY \\n\");\r\n\t}\r\n\r\n\tprintf_s(\"\\n%s\\n\",headeroutput);\r\n\r\n\tCloseHandle(HMhdl);\r\n\tCloseHandle(HMhdl);\r\n\treturn 0;\r\n}<\/pre>\n<h2>Quelques Tests<\/h2>\n<p>On va forcer les changements d&#8217;\u00e9tat \u00e0 l&#8217;aide d&#8217;un petit bout de code maison (<em>allokatorr<\/em>) qui va allouer pas \u00e0 pas des blocs de m\u00e9moire et les verrouiller avec <a href=\"https:\/\/msdn.microsoft.com\/fr-fr\/library\/windows\/desktop\/aa366895%28v=vs.85%29.aspx?f=255&amp;MSPPError=-2147217396\">VirtualLock<\/a><i>(*)<\/i> pour emp\u00eacher Windows de pousser ces allocations dans le fichier d&#8217;\u00e9change.<\/p>\n<pre name=\"code\" class=\"c\">E:\\CAPDATA\\DEV\\CPP\\allokatorr\\x64\\Debug&gt;allokatorr\r\nUsage : allokatorr\r\n        size of allocation step in bytes\r\n        memory to leave to OS in bytes\r\n        interval between steps in ms\r\n        time in seconds to stay at maximum allocation\r\n\r\nExemple (allocating on 100Mb units in 100ms steps, leaving 400Mb for the OS, waiting for 30 seconds before exiting) :\r\n allokatorr 104857600 419430400 100 30<\/pre>\n<p><strong>Pour les param\u00e8tres d&#8217;<i>allokatorr<\/i>:<\/strong><br \/>\n&#8211; Quantit\u00e9 de m\u00e9moire allou\u00e9e et verrouill\u00e9e en octets.<br \/>\n&#8211; Quantit\u00e9 de m\u00e9moire physique laiss\u00e9e libre. En pratique on va laisser cette valeur plus la valeur de la prochaine allocation, par exemple si on alloue par pas de 30Mb, qu&#8217;on laisse 50Mb et qu&#8217;il ne reste que 70Mb de libre, on va rester \u00e0 70Mb.<br \/>\n&#8211; Intervalle de temps entre 2 allocations en ms. Permet de simuler une surallocation rapide ou plus lente comme une fuite.<br \/>\n&#8211; Lorsque le process est arriv\u00e9e en but\u00e9e d&#8217;allocation, il va tenir cette allocation pendant une p\u00e9riode en secondes. Permet simplement d&#8217;avoir le temps de visualiser les ph\u00e9nom\u00e8nes c\u00f4t\u00e9 syst\u00e8me, SQL server, etc&#8230;<\/p>\n<p>D&#8217;abord on va montrer le passage de HIGH \u00e0 STEADY en allouant par pas de 30Mb et en ne laissant que 100Mb:<\/p>\n<pre name=\"code\" class=\"c\">E:\\CAPDATA\\DEV\\CPP\\allokatorr\\x64\\Debug&gt;allokatorr 31457280 104857600 300 120\r\n-------------------------------------------------------------------------------------------\r\nSize of dwpage:4096 bytes\r\nWorking Set Min : 41947136 octets\r\nWorking Set Max : 8550109184 octets\r\n-------------------------------------------------------------------------------------------\r\n(...)\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6522990592 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:222 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6554451968 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:202 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6585913344 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:172 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6617374720 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:144 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6648836096 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:114 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\nAttente de 120 secondes avant de rendre la memoire ...<\/pre>\n<p>\u00c7a grimpe:<\/p>\n<p><a href=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/TM_memoryload.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-5893\" title=\"TM_memoryload\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/TM_memoryload.png\" alt=\"\" width=\"802\" height=\"479\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/TM_memoryload.png 802w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/TM_memoryload-300x179.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/TM_memoryload-768x459.png 768w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/a><br \/>\n&nbsp;<br \/>\nEt le r\u00e9sultat de la notification au moment o\u00f9 on passe le seuil des 192Mb:<\/p>\n<pre name=\"code\" class=\"c\">E:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug&gt;querymemrn.exe\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 225\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 5059\r\n- L etat systeme courant est : HIGH\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug&gt;querymemrn.exe\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 202\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 5030\r\n- L etat systeme courant est : HIGH\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug&gt;querymemrn.exe\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 144\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 4970\r\n- L etat systeme courant est : STEADY\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug&gt;querymemrn.exe\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 113\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 4942\r\n- L etat systeme courant est : STEADY<\/pre>\n<p>A partir de l\u00e0, j&#8217;entends mon disque dur qui gratte pour aller d\u00e9placer tout ce qui peut l&#8217;\u00eatre (chrome, SSMS, Visual Studio, etc&#8230;) dans le pagefile&#8230;<\/p>\n<h2>Toujours plus bas:<\/h2>\n<p>Pour aller voir une notification \u00e0 LOW sans avoir \u00e0 freezer tout le syst\u00e8me, on va tricher en configurant les valeurs de seuils via un DWORD dans le registre sous :<\/p>\n<pre name=\"code\" class=\"c\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\SessionManager\\MemoryManagement<\/pre>\n<p>Nom des cl\u00e9s : <em>LowMemoryThreshold<\/em> ou <em>HighMemoryThreshold<\/em>.<br \/>\nAttention avant de lancer <em>regedit<\/em>, il faut bien se dire que si on monte <em>LowMemoryThreshold<\/em> trop haut, le syst\u00e8me va entrer en mode STEADY plus t\u00f4t car <em>HighMemoryThreshold<\/em> vaut trois fois la valeur de <em>LowMemoryThreshold<\/em>.<\/p>\n<p>Pour tester on va mettre <em>LowMemoryThreshold<\/em> \u00e0 200Mb:<\/p>\n<p><a href=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/LowMemoryThreshold.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-5906\" title=\"LowMemoryThreshold\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/LowMemoryThreshold.png\" alt=\"\" width=\"522\" height=\"78\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/LowMemoryThreshold.png 522w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/LowMemoryThreshold-300x44.png 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/a><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br \/>\nOn red\u00e9marre la machine pour prendre en compte et c&#8217;est reparti:<br \/>\n&nbsp;<\/p>\n<pre name=\"code\" class=\"c\">\r\nE:\\CAPDATA\\DEV\\CPP\\allokatorr\\x64\\Debug>allokatorr 31457280 104857600 300 120\r\n-------------------------------------------------------------------------------------------\r\nSize of dwpage:4096 bytes\r\nWorking Set Min : 41947136 octets\r\nWorking Set Max : 8550109184 octets\r\n-------------------------------------------------------------------------------------------\r\n(...)\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6554451968 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:172 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6585913344 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:174 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6617374720 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:144 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\n-------------------------------------------------------------------------------------------\r\n31461376 bytes committed\r\nVerrouillage de 31461376 octets\r\nWorking Set Min : 6648836096 octets\r\nWorking Set Max : 8550109184 octets\r\nMemoire restante apres allocation de 31461376 octets:125 Mb\r\n-------------------------------------------------------------------------------------------\r\n\r\nAttente de 120 secondes avant de rendre la memoire ...\r\n<\/pre>\n<p>On note au passage le r\u00e9sultat de QueryMemoryResourceNotification lors du passage du nouveau seuil pour High (200*3 = 600Mb):<\/p>\n<pre name=\"code\" class=\"c\">\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug>querymemrn\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 671\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 7649\r\n- L etat systeme courant est : HIGH\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug>querymemrn\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 623\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 7593\r\n- L etat systeme courant est : HIGH\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug>querymemrn\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 595\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 7563\r\n- L etat systeme courant est : STEADY\r\n<\/pre>\n<p>&nbsp;<br \/>\nEt enfin le passage en LOW sous les 200Mb :<\/p>\n<pre name=\"code\" class=\"c\">\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 239\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 6957\r\n- L etat systeme courant est : STEADY\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug>querymemrn\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 201\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 6898\r\n- L etat systeme courant est : STEADY\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug>querymemrn\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 187\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 6894\r\n- L etat systeme courant est : LOW\r\n\r\n# ----------------------------------------------------------------------------\r\n\r\nE:\\CAPDATA\\DEV\\CPP\\querymemrn\\x64\\Debug>querymemrn\r\n\r\n# ----------------------------------------------------------------------------\r\nUSAGE : querymemrn : Verifie si l etat de la memoire physique est LOW ou HIGH\r\n\r\n- Memoire physique totale (Mb): 8174\r\n- Memoire physique libre  (Mb): 172\r\n- Swap total  (Mb): 16346\r\n- Swap libre  (Mb): 6876\r\n- L etat systeme courant est : LOW\r\n\r\n# ----------------------------------------------------------------------------\r\n<\/pre>\n<p>&nbsp;<br \/>\nCette fois c&#8217;est bon on va pouvoir commencer \u00e0 g\u00e9n\u00e9rer quelques situations o\u00f9 la machine est \u00e0 l&#8217;\u00e9tat LOW et voir l&#8217;interaction avec Resource Monitor dans SQL Server. Mais on garde tout \u00e7a pour un prochain \u00e9pisode bien s\u00fbr \ud83d\ude42<\/p>\n<p>A+<\/p>\n<p><i>(*) : Attention \u00e0 ne pas confondre avec le m\u00e9canisme des Locked Pages utilis\u00e9 notamment par SQL Server. <\/i><\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F5796&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F5796&#038;title=Notifications%20d%E2%80%99%C3%A9tat%20de%20la%20m%C3%A9moire%20sous%20windows%20%3A%20LOW%2C%20STEADY%2C%20HIGH\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Notifications%20d%E2%80%99%C3%A9tat%20de%20la%20m%C3%A9moire%20sous%20windows%20%3A%20LOW%2C%20STEADY%2C%20HIGH&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F5796\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Avant de commencer un article un peu profond sur Resource Monitor, j&#8217;ai d\u00fb faire quelques tests sur le fonctionnement des \u00e9tats m\u00e9moire et des notifications\u00a0dans Windows. Windows propose depuis sa version XP\/2003 et \u00e0 travers une API, \u00e0 toute application&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":7816,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[173,5],"tags":[174],"class_list":["post-5796","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-operating-system","category-sqlserver","tag-win32"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Notifications d&#039;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Notifications d&#039;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Avant de commencer un article un peu profond sur Resource Monitor, j&#8217;ai d\u00fb faire quelques tests sur le fonctionnement des \u00e9tats m\u00e9moire et des notifications\u00a0dans Windows. Windows propose depuis sa version XP\/2003 et \u00e0 travers une API, \u00e0 toute application&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-03T15:46:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-21T16:01:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/STEADYY.png\" \/>\n\t<meta property=\"og:image:width\" content=\"656\" \/>\n\t<meta property=\"og:image:height\" content=\"541\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Notifications d&#8217;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH\",\"datePublished\":\"2016-06-03T15:46:48+00:00\",\"dateModified\":\"2022-11-21T16:01:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\"},\"wordCount\":939,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"win32\"],\"articleSection\":[\"Operating System\",\"SQL Server\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\",\"name\":\"Notifications d'\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2016-06-03T15:46:48+00:00\",\"dateModified\":\"2022-11-21T16:01:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Notifications d&#8217;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Notifications d'\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/","og_locale":"fr_FR","og_type":"article","og_title":"Notifications d'\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH - Capdata TECH BLOG","og_description":"Avant de commencer un article un peu profond sur Resource Monitor, j&#8217;ai d\u00fb faire quelques tests sur le fonctionnement des \u00e9tats m\u00e9moire et des notifications\u00a0dans Windows. Windows propose depuis sa version XP\/2003 et \u00e0 travers une API, \u00e0 toute application&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2016-06-03T15:46:48+00:00","article_modified_time":"2022-11-21T16:01:32+00:00","og_image":[{"width":656,"height":541,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2016\/06\/STEADYY.png","type":"image\/png"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Notifications d&#8217;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH","datePublished":"2016-06-03T15:46:48+00:00","dateModified":"2022-11-21T16:01:32+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/"},"wordCount":939,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["win32"],"articleSection":["Operating System","SQL Server"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/","url":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/","name":"Notifications d'\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2016-06-03T15:46:48+00:00","dateModified":"2022-11-21T16:01:32+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/notifications-detat-de-la-memoire-sous-windows-low-steady-high\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Notifications d&#8217;\u00e9tat de la m\u00e9moire sous windows : LOW, STEADY, HIGH"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/5796","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=5796"}],"version-history":[{"count":167,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/5796\/revisions"}],"predecessor-version":[{"id":9523,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/5796\/revisions\/9523"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/7816"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=5796"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=5796"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=5796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}