Files
document-haness/docs/virtualization/final/assets/diagrams/memory-pressure-reclaim-swap-oom/memory-pressure-reclaim-swap-oom.drawio
T

60 lines
5.8 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2026-07-23T00:00:00.000Z" agent="techviz-harness" version="24.7.17" type="device">
<diagram id="memory-pressure-reclaim-swap-oom" name="Host memory pressure가 storage와 OOM으로 갈라지는 경로">
<mxGraphModel dx="1313" dy="455" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1313" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="n_pressure" value="Host memory pressure" tooltip="실제 Host RAM 수요가 available physical memory에 접근한 상태. | Evidence: L2818-L2831" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=document;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="70.0" y="180.0" width="220.0" height="110.0" as="geometry"/>
</mxCell>
<mxCell id="n_reclaim" value="Reclaim" tooltip="Linux가 회수 가능한 page/cache를 처리하는 첫 대응. | Evidence: L2818-L2831" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;strokeColor=#2563eb;strokeWidth=2;" vertex="1" parent="1">
<mxGeometry x="450.0" y="203.0" width="150.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_clean-page" value="clean file-backed page&lt;br/&gt;discard · reread" tooltip="원본이 storage에 있어 RAM에서 제거하고 나중에 다시 읽을 수 있다. | Evidence: L2834-L2848" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="760.0" y="60.0" width="188.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_host-oom" value="Host OOM" tooltip="reclaim 등으로도 필요한 memory 확보에 실패했을 때 Host kernel에서 발생할 수 있다. | Evidence: L3213-L3231, L3249-L3265" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
<mxGeometry x="779.0" y="203.0" width="150.0" height="64.0" as="geometry"/>
</mxCell>
<mxCell id="n_host-swap" value="Host swap I/O&lt;br/&gt;anonymous page" tooltip="anonymous page의 backing이 필요할 때 host swap I/O가 생길 수 있다. | Evidence: L2850-L2852, L2856-L2886" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;" vertex="1" parent="1">
<mxGeometry x="779.0" y="339.0" width="150.0" height="71.0" as="geometry"/>
</mxCell>
<mxCell id="n_storage" value="Storage contention&lt;br/&gt;Host swap&lt;br/&gt;DB I/O&lt;br/&gt;writeback" tooltip="여러 I/O가 한 physical device에 몰려 contention을 만든다. | Evidence: L2938-L2965" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;shape=cylinder3;boundedLbl=1;backgroundOutline=1;fillColor=#eef6fb;" vertex="1" parent="1">
<mxGeometry x="1108.0" y="182.5" width="160.0" height="105.0" as="geometry"/>
</mxCell>
<mxCell id="e_clean-storage" value="reread" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_clean-page" target="n_storage">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1052.0" y="160.8" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_pressure-reclaim" value="pressure" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_pressure" target="n_reclaim">
<mxGeometry relative="1" as="geometry">
<mxPoint x="370.0" y="207.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_reclaim-clean" value="file-backed" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_reclaim" target="n_clean-page">
<mxGeometry relative="1" as="geometry">
<mxPoint x="704.0" y="156.2" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_reclaim-oom" value="확보 실패" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_reclaim" target="n_host-oom">
<mxGeometry relative="1" as="geometry">
<mxPoint x="689.5" y="207.0" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_reclaim-swap" value="anonymous" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_reclaim" target="n_host-swap">
<mxGeometry relative="1" as="geometry">
<mxPoint x="713.5" y="313.8" as="offset"/>
</mxGeometry>
</mxCell>
<mxCell id="e_swap-storage" value="swap" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_host-swap" target="n_storage">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1042.5" y="309.2" as="offset"/>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>