refactor: 문서 개선 중
This commit is contained in:
+10
-10
@@ -10,24 +10,24 @@ virtio-balloon Driver, virtqueue, QEMU virtio-balloon Device, Host Memory Manage
|
||||
|
||||
## Elements and evidence
|
||||
|
||||
- **virtio-balloon Driver** (driver): Guest kernel 쪽 balloon driver. target 을 받아 Guest page 를 확보한다. Evidence: L3013–L3015, L3046–L3046.
|
||||
- **virtqueue** (queue): Guest 와 QEMU 가 balloon 요청을 주고받는 공유 큐. VM Boundary 바로 안쪽이다. Evidence: L3017–L3017.
|
||||
- **virtio-balloon Driver** (driver): Guest kernel 쪽 balloon driver. target 을 받아 Guest page 를 확보한다. Evidence: L3026–L3028, L3059–L3059.
|
||||
- **virtqueue** (queue): Guest 와 QEMU 가 balloon 요청을 주고받는 공유 큐. VM Boundary 바로 안쪽이다. Evidence: L3030–L3030.
|
||||
- **QEMU virtio-balloon
|
||||
Device** (service): Host 쪽 balloon device. 경계를 넘어온 내용을 Host memory management 로 넘긴다. Evidence: L3022–L3022, L3037–L3041.
|
||||
Device** (service): Host 쪽 balloon device. 경계를 넘어온 내용을 Host memory management 로 넘긴다. Evidence: L3035–L3035, L3050–L3054.
|
||||
- **Host Memory
|
||||
Management** (service): balloon target 을 정하는 쪽이자 회수 기회가 생기는 자리. Evidence: L3025–L3025, L3034–L3037.
|
||||
Management** (service): balloon target 을 정하는 쪽이자 회수 기회가 생기는 자리. Evidence: L3038–L3038, L3047–L3050.
|
||||
|
||||
## Relationships
|
||||
|
||||
- **Host Memory
|
||||
Management → QEMU virtio-balloon
|
||||
Device:** Balloon target 조정. Evidence: L3034–L3041.
|
||||
Device:** Balloon target 조정. Evidence: L3047–L3054.
|
||||
- **QEMU virtio-balloon
|
||||
Device → virtqueue:** VM Boundary. Evidence: L3017–L3022, L3041–L3046.
|
||||
- **virtqueue → virtio-balloon Driver:** Balloon target. Evidence: L3013–L3017, L3043–L3046.
|
||||
- **virtio-balloon Driver → virtqueue:** Guest pages 확보. Evidence: L3046–L3050.
|
||||
Device → virtqueue:** VM Boundary. Evidence: L3030–L3035, L3054–L3059.
|
||||
- **virtqueue → virtio-balloon Driver:** Balloon target. Evidence: L3026–L3030, L3056–L3059.
|
||||
- **virtio-balloon Driver → virtqueue:** Guest pages 확보. Evidence: L3059–L3063.
|
||||
- **virtqueue → QEMU virtio-balloon
|
||||
Device:** VM Boundary. Evidence: L3017–L3025.
|
||||
Device:** VM Boundary. Evidence: L3030–L3038.
|
||||
- **QEMU virtio-balloon
|
||||
Device → Host Memory
|
||||
Management:** 회수 가능 backing. Evidence: L3022–L3028, L3077–L3079.
|
||||
Management:** 회수 가능 backing. Evidence: L3035–L3041, L3090–L3092.
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
digraph techviz {
|
||||
graph [rankdir=LR, splines=ortho, nodesep=0.55, ranksep=0.85];
|
||||
node [fontname=Helvetica, fontsize=11, margin="0.18,0.12", style="rounded,filled", fillcolor=white, color="#2d4357", penwidth=1.5];
|
||||
edge [fontname=Helvetica, fontsize=10, color="#364b5f", penwidth=1.4, arrowsize=0.75];
|
||||
n0 [label="virtio-balloon Driver", shape=box, style="rounded,filled"];
|
||||
n1 [label="virtqueue", shape=oval, style="rounded,filled"];
|
||||
n2 [label="QEMU virtio-balloon\nDevice", shape=box, style="rounded,filled"];
|
||||
n3 [label="Host Memory\nManagement", shape=box, style="rounded,filled"];
|
||||
n3 -> n2 [label="Balloon target 조정", style=solid];
|
||||
n2 -> n1 [label="VM Boundary", style=solid];
|
||||
n1 -> n0 [label="Balloon target", style=solid];
|
||||
n0 -> n1 [label="Guest pages 확보", style=solid];
|
||||
n1 -> n2 [label="VM Boundary", style=solid];
|
||||
n2 -> n3 [label="회수 가능 backing", style=solid];
|
||||
}
|
||||
+4
-4
@@ -5,18 +5,18 @@
|
||||
<root>
|
||||
<mxCell id="0"/>
|
||||
<mxCell id="1" parent="0"/>
|
||||
<mxCell id="n_balloon-driver" value="virtio-balloon Driver<br/>Guest Kernel" tooltip="Guest kernel 쪽 balloon driver. target 을 받아 Guest page 를 확보한다. | Evidence: L3013-L3015, L3046-L3046" 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">
|
||||
<mxCell id="n_balloon-driver" value="virtio-balloon Driver<br/>Guest Kernel" tooltip="Guest kernel 쪽 balloon driver. target 을 받아 Guest page 를 확보한다. | Evidence: L3026-L3028, L3059-L3059" 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="45.0" y="35.0" width="181.0" height="71.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_virtqueue" value="virtqueue" tooltip="Guest 와 QEMU 가 balloon 요청을 주고받는 공유 큐. VM Boundary 바로 안쪽이다. | Evidence: L3017-L3017" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
|
||||
<mxCell id="n_virtqueue" value="virtqueue" tooltip="Guest 와 QEMU 가 balloon 요청을 주고받는 공유 큐. VM Boundary 바로 안쪽이다. | Evidence: L3030-L3030" 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="255.0" y="35.0" width="150.0" height="64.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_qemu-balloon-device" value="QEMU virtio-balloon
|
||||
Device" tooltip="Host 쪽 balloon device. 경계를 넘어온 내용을 Host memory management 로 넘긴다. | Evidence: L3022-L3022, L3037-L3041" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
|
||||
Device" tooltip="Host 쪽 balloon device. 경계를 넘어온 내용을 Host memory management 로 넘긴다. | Evidence: L3035-L3035, L3050-L3054" 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="465.0" y="35.0" width="167.0" height="74.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="n_host-memory-management" value="Host Memory
|
||||
Management" tooltip="balloon target 을 정하는 쪽이자 회수 기회가 생기는 자리. | Evidence: L3025-L3025, L3034-L3037" style="whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fontSize=14;fontStyle=1;fillColor=#ffffff;strokeColor=#2d4357;verticalAlign=middle;" vertex="1" parent="1">
|
||||
Management" tooltip="balloon target 을 정하는 쪽이자 회수 기회가 생기는 자리. | Evidence: L3038-L3038, L3047-L3050" 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="675.0" y="35.0" width="150.0" height="74.0" as="geometry"/>
|
||||
</mxCell>
|
||||
<mxCell id="e_target-adjust" value="Balloon target 조정" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;endArrow=block;endFill=1;" edge="1" parent="1" source="n_host-memory-management" target="n_qemu-balloon-device">
|
||||
|
||||
+16
-5
@@ -2,21 +2,22 @@
|
||||
"harness_version": "0.2.0",
|
||||
"spec_id": "virtio-balloon-inflate-deflate",
|
||||
"spec_version": "1.1",
|
||||
"spec_sha256": "1a53fd7e3e5cf5b553be00d6c12f47f8493d302f9a79f660d29e1d85490e61de",
|
||||
"spec_sha256": "4656ebc5df3dec37c88ef57a973289ffff3ac2d8035c85c09ffc1819d68ab855",
|
||||
"source_context": {
|
||||
"document": "docs/virtualization/final/document.md",
|
||||
"document_sha256": "181e2b3cc8a45bae81e7e8193d026937c4d586ae4495d3b2c323eb7e6abcfadd",
|
||||
"document_sha256": "8c4ecc64c8cea9a4450ed7131fdd9cb2048dc092b66cd969f6346ed77887c210",
|
||||
"anchor": {
|
||||
"kind": "heading",
|
||||
"value": "65. virtio-balloon 구조",
|
||||
"line": 3008
|
||||
"line": 3021
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
"virtio-balloon-inflate-deflate.svg",
|
||||
"virtio-balloon-inflate-deflate.drawio",
|
||||
"virtio-balloon-inflate-deflate.mmd",
|
||||
"virtio-balloon-inflate-deflate.d2",
|
||||
"virtio-balloon-inflate-deflate.dot",
|
||||
"virtio-balloon-inflate-deflate.drawio",
|
||||
"virtio-balloon-inflate-deflate.excalidraw",
|
||||
"virtio-balloon-inflate-deflate.alt.md"
|
||||
],
|
||||
@@ -27,5 +28,15 @@
|
||||
"reference_ids": [
|
||||
"payment-approval-sequence"
|
||||
],
|
||||
"diagram_only": true
|
||||
"diagram_only": true,
|
||||
"source_spec_file_sha256": "3eb87c2e0da87b76563f6611dca1821ffe17b18debb16ede52863436ff74a534",
|
||||
"output_sha256": {
|
||||
"virtio-balloon-inflate-deflate.svg": "4722f6147d70def8734f300b7ffdaba8acb341448182ed9666be74136104c7ee",
|
||||
"virtio-balloon-inflate-deflate.mmd": "a756eba8251ca111a406ff5af80c3e45f537df7f5b03e7536e25e2d14498a945",
|
||||
"virtio-balloon-inflate-deflate.d2": "4ef3dab8288b8823688910eb416fe922d258a0736d0e4074c1f6931c052df9ed",
|
||||
"virtio-balloon-inflate-deflate.dot": "5ab4b8d1b4fc02972b5dd270496ed95d98918b34ef8476c4b4bf95b5131eb201",
|
||||
"virtio-balloon-inflate-deflate.drawio": "20abf47a8865a3569aa1caa56dd7de168c2af3d0052e228381f27087dc60ad83",
|
||||
"virtio-balloon-inflate-deflate.excalidraw": "0613fa8301e2a5d7eb080f706e6841d828445b4ce7baf23e9b845a7856a90abb",
|
||||
"virtio-balloon-inflate-deflate.alt.md": "4358baa3745beb79671dc64ed9cf31f445815ab6256d7c65e3924ceb1a0dbc82"
|
||||
}
|
||||
}
|
||||
|
||||
+11
-11
@@ -2,7 +2,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="870" height="542" viewBox="0 0 870 542" role="img" aria-labelledby="diagram-title diagram-description">
|
||||
<title id="diagram-title">balloon target 은 VM Boundary 를 건너 driver 에 닿고 확보한 page 는 같은 경계를 되건너 온다</title>
|
||||
<desc id="diagram-description">참여자는 왼쪽부터 Guest kernel 의 virtio-balloon Driver, virtqueue, QEMU virtio-balloon Device, Host Memory Management 네 개다. 메시지는 위에서 아래로 읽는다. 1번은 Host Memory Management 가 QEMU 쪽 device 에 balloon target 조정을 보내는 것이고, 2번에서 그 요청이 virtqueue 로 내려가면서 VM Boundary 를 넘고, 3번에서 Guest kernel 의 driver 에 balloon target 이 닿는다. 여기서 방향이 바뀐다. 4번에서 driver 가 확보한 Guest page 를 virtqueue 에 올리고, 5번에서 그것이 다시 VM Boundary 를 넘어 QEMU 쪽 device 로 가고, 6번에서 device 가 Host Memory Management 에 회수 가능 backing 으로 넘긴다. target 을 올릴 때와 내릴 때 Guest 가 쓸 수 있는 memory 가 어느 쪽으로 움직이는지는 본문의 표가 맡는다.</desc>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"virtio-balloon-inflate-deflate","profile":"sequence"},"source_context":{"document":"docs/virtualization/final/document.md","document_sha256":"181e2b3cc8a45bae81e7e8193d026937c4d586ae4495d3b2c323eb7e6abcfadd","anchor":{"kind":"heading","value":"65. virtio-balloon 구조","line":3008}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<metadata>{"techviz":{"spec_version":"1.1","id":"virtio-balloon-inflate-deflate","profile":"sequence"},"source_context":{"document":"docs/virtualization/final/document.md","document_sha256":"8c4ecc64c8cea9a4450ed7131fdd9cb2048dc092b66cd969f6346ed77887c210","anchor":{"kind":"heading","value":"65. virtio-balloon 구조","line":3021}},"evidence_policy":"Each factual element cites source lines or is marked assumption.","diagram_only":true}</metadata>
|
||||
<defs>
|
||||
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M 0 0 L 10 5 L 0 10 z" />
|
||||
@@ -50,38 +50,38 @@
|
||||
</style>
|
||||
</defs>
|
||||
<rect class="canvas" width="870" height="542" />
|
||||
<rect class="node-shape kind-driver emphasis-primary role-participant" data-evidence="3013-3015,3046-3046" x="45.0" y="35.0" width="181.0" height="71.0" rx="7" />
|
||||
<rect class="node-shape kind-driver emphasis-primary role-participant" data-evidence="3026-3028,3059-3059" x="45.0" y="35.0" width="181.0" height="71.0" rx="7" />
|
||||
<text class="node-label" x="135.5" y="62.0">virtio-balloon Driver</text>
|
||||
<line class="node-detail-divider" x1="59.0" y1="83.0" x2="212.0" y2="83.0" />
|
||||
<text class="node-detail" x="61.0" y="100.0">Guest Kernel</text>
|
||||
<line class="lifeline" x1="135.5" y1="106.0" x2="135.5" y2="512.0" />
|
||||
<rect class="node-shape kind-queue emphasis-normal role-participant" data-evidence="3017-3017" x="255.0" y="35.0" width="150.0" height="64.0" rx="7" />
|
||||
<rect class="node-shape kind-queue emphasis-normal role-participant" data-evidence="3030-3030" x="255.0" y="35.0" width="150.0" height="64.0" rx="7" />
|
||||
<text class="node-label" x="330.0" y="65.0">virtqueue</text>
|
||||
<line class="lifeline" x1="330.0" y1="99.0" x2="330.0" y2="512.0" />
|
||||
<rect class="node-shape kind-service emphasis-normal role-participant" data-evidence="3022-3022,3037-3041" x="465.0" y="35.0" width="167.0" height="74.0" rx="7" />
|
||||
<rect class="node-shape kind-service emphasis-normal role-participant" data-evidence="3035-3035,3050-3054" x="465.0" y="35.0" width="167.0" height="74.0" rx="7" />
|
||||
<text class="node-label" x="548.5" y="62.0">QEMU virtio-balloon</text>
|
||||
<text class="node-label" x="548.5" y="80.0">Device</text>
|
||||
<line class="lifeline" x1="548.5" y1="109.0" x2="548.5" y2="512.0" />
|
||||
<rect class="node-shape kind-service emphasis-normal role-participant" data-evidence="3025-3025,3034-3037" x="675.0" y="35.0" width="150.0" height="74.0" rx="7" />
|
||||
<rect class="node-shape kind-service emphasis-normal role-participant" data-evidence="3038-3038,3047-3050" x="675.0" y="35.0" width="150.0" height="74.0" rx="7" />
|
||||
<text class="node-label" x="750.0" y="62.0">Host Memory</text>
|
||||
<text class="node-label" x="750.0" y="80.0">Management</text>
|
||||
<line class="lifeline" x1="750.0" y1="109.0" x2="750.0" y2="512.0" />
|
||||
<polyline class="edge kind-control style-solid emphasis-normal" points="750.0,140.0 548.5,140.0" data-evidence="3034-3041" />
|
||||
<polyline class="edge kind-control style-solid emphasis-normal" points="750.0,140.0 548.5,140.0" data-evidence="3047-3054" />
|
||||
<rect class="edge-label-bg" x="573.2" y="114.0" width="152.0" height="22" rx="3" />
|
||||
<text class="edge-label" x="649.2" y="129.0">1. Balloon target 조정</text>
|
||||
<polyline class="edge kind-control style-solid emphasis-normal" points="548.5,202.0 330.0,202.0" data-evidence="3017-3022,3041-3046" />
|
||||
<polyline class="edge kind-control style-solid emphasis-normal" points="548.5,202.0 330.0,202.0" data-evidence="3030-3035,3054-3059" />
|
||||
<rect class="edge-label-bg" x="383.4" y="176.0" width="111.8" height="22" rx="3" />
|
||||
<text class="edge-label" x="439.2" y="191.0">2. VM Boundary</text>
|
||||
<polyline class="edge kind-control style-solid emphasis-normal" points="330.0,264.0 135.5,264.0" data-evidence="3013-3017,3043-3046" />
|
||||
<polyline class="edge kind-control style-solid emphasis-normal" points="330.0,264.0 135.5,264.0" data-evidence="3026-3030,3056-3059" />
|
||||
<rect class="edge-label-bg" x="166.8" y="238.0" width="131.9" height="22" rx="3" />
|
||||
<text class="edge-label" x="232.8" y="253.0">3. Balloon target</text>
|
||||
<polyline class="edge kind-data style-solid emphasis-normal" points="135.5,326.0 330.0,326.0" data-evidence="3046-3050" />
|
||||
<polyline class="edge kind-data style-solid emphasis-normal" points="135.5,326.0 330.0,326.0" data-evidence="3059-3063" />
|
||||
<rect class="edge-label-bg" x="166.8" y="300.0" width="131.9" height="22" rx="3" />
|
||||
<text class="edge-label" x="232.8" y="315.0">4. Guest pages 확보</text>
|
||||
<polyline class="edge kind-data style-solid emphasis-normal" points="330.0,388.0 548.5,388.0" data-evidence="3017-3025" />
|
||||
<polyline class="edge kind-data style-solid emphasis-normal" points="330.0,388.0 548.5,388.0" data-evidence="3030-3038" />
|
||||
<rect class="edge-label-bg" x="383.4" y="362.0" width="111.8" height="22" rx="3" />
|
||||
<text class="edge-label" x="439.2" y="377.0">5. VM Boundary</text>
|
||||
<polyline class="edge kind-data style-solid emphasis-normal" points="548.5,450.0 750.0,450.0" data-evidence="3022-3028,3077-3079" />
|
||||
<polyline class="edge kind-data style-solid emphasis-normal" points="548.5,450.0 750.0,450.0" data-evidence="3035-3041,3090-3092" />
|
||||
<rect class="edge-label-bg" x="586.6" y="424.0" width="125.2" height="22" rx="3" />
|
||||
<text class="edge-label" x="649.2" y="439.0">6. 회수 가능 backing</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
Reference in New Issue
Block a user