Files
document-haness/docs/keycloak-session-store/final/assets/cpu-io-passthrough-paths/cpu-io-passthrough-paths.excalidraw
T

1427 lines
32 KiB
Plaintext

{
"type": "excalidraw",
"version": 2,
"source": "techviz-harness",
"elements": [
{
"id": "edge-cpu-runs-guest",
"type": "arrow",
"x": 1038.0,
"y": 281.0,
"width": 160.0,
"height": 0.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 845357759,
"version": 1,
"versionNonce": 1612344110,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
0.0
],
[
80.0,
0.0
],
[
80.0,
0.0
],
[
160.0,
0.0
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-physical-cpu",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-guest-code",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-cpu-runs-guest",
"type": "text",
"x": 1070.0,
"y": 241.0,
"width": 96,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 536766967,
"version": 1,
"versionNonce": 1971718843,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "VMX non-root",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "VMX non-root",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-device-dma",
"type": "arrow",
"x": 1015.5,
"y": 424.0,
"width": 182.5,
"height": 17.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 1475632954,
"version": 1,
"versionNonce": 99932222,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
17.0
],
[
91.25,
17.0
],
[
91.25,
0.0
],
[
182.5,
0.0
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-pci-device",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-iommu",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-device-dma",
"type": "text",
"x": 1085.75,
"y": 420.5,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 83407640,
"version": 1,
"versionNonce": 1095275041,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "DMA",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "DMA",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-kvm-vm-entry",
"type": "arrow",
"x": 676.0,
"y": 104.0,
"width": 167.0,
"height": 177.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 1904768359,
"version": 1,
"versionNonce": 99296897,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
0.0
],
[
83.5,
0.0
],
[
83.5,
177.0
],
[
167.0,
177.0
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-kvm",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-physical-cpu",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-kvm-vm-entry",
"type": "text",
"x": 738.5,
"y": 180.5,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 185792823,
"version": 1,
"versionNonce": 154830599,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "VM entry",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "VM entry",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-qemu-device-fd",
"type": "arrow",
"x": 321.0,
"y": 272.5,
"width": 186.0,
"height": 71.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 137397988,
"version": 1,
"versionNonce": 736965404,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
71.0
],
[
93.0,
71.0
],
[
93.0,
0.0
],
[
186.0,
0.0
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-qemu",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-vfio",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-qemu-device-fd",
"type": "text",
"x": 393.0,
"y": 296.0,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 778589170,
"version": 1,
"versionNonce": 213892165,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "장치 fd",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "장치 fd",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-qemu-kvm-run",
"type": "arrow",
"x": 321.0,
"y": 104.0,
"width": 167.0,
"height": 221.5,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 449529868,
"version": 1,
"versionNonce": 1008374866,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
221.5
],
[
83.5,
221.5
],
[
83.5,
0.0
],
[
167.0,
0.0
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-qemu",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-kvm",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-qemu-kvm-run",
"type": "text",
"x": 383.5,
"y": 202.75,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1197685344,
"version": 1,
"versionNonce": 1782962046,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "KVM_RUN",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "KVM_RUN",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-qemu-vhost-ioctl",
"type": "arrow",
"x": 321.0,
"y": 361.5,
"width": 186.0,
"height": 79.5,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 1582010981,
"version": 1,
"versionNonce": 393196348,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
0.0
],
[
93.0,
0.0
],
[
93.0,
79.5
],
[
186.0,
79.5
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-qemu",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-vhost",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-qemu-vhost-ioctl",
"type": "text",
"x": 393.0,
"y": 389.25,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 149615293,
"version": 1,
"versionNonce": 385858350,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "제어 ioctl",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "제어 ioctl",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-qemu-virtqueue",
"type": "arrow",
"x": 321.0,
"y": 379.5,
"width": 160.0,
"height": 221.5,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 1873298031,
"version": 1,
"versionNonce": 1994100496,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
0.0
],
[
80.0,
0.0
],
[
80.0,
221.5
],
[
160.0,
221.5
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-qemu",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-virtio-driver",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-qemu-virtqueue",
"type": "text",
"x": 380.0,
"y": 478.25,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 444563865,
"version": 1,
"versionNonce": 1977908933,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "virtqueue",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "virtqueue",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "edge-vfio-binds-device",
"type": "arrow",
"x": 657.0,
"y": 272.5,
"width": 208.5,
"height": 168.5,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": null,
"seed": 992274126,
"version": 1,
"versionNonce": 20624247,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"points": [
[
0.0,
0.0
],
[
104.25,
0.0
],
[
104.25,
168.5
],
[
208.5,
168.5
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "node-vfio",
"focus": 0,
"gap": 4
},
"endBinding": {
"elementId": "node-pci-device",
"focus": 0,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow",
"elbowed": true
},
{
"id": "edge-label-vfio-binds-device",
"type": "text",
"x": 740.25,
"y": 344.75,
"width": 90,
"height": 24,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 78940901,
"version": 1,
"versionNonce": 280960500,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 13,
"fontFamily": 5,
"text": "vfio-pci 결합",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "vfio-pci 결합",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-qemu",
"type": "rectangle",
"x": 70.0,
"y": 308.5,
"width": 251.0,
"height": 88.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1265942130,
"version": 1,
"versionNonce": 447320704,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-qemu",
"type": "text",
"x": 80.0,
"y": 318.5,
"width": 231.0,
"height": 68.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 82355235,
"version": 1,
"versionNonce": 463780486,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "QEMU\n/dev/kvm\nKVM_CREATE_VM · KVM_CREATE_VCPU",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "QEMU\n/dev/kvm\nKVM_CREATE_VM · KVM_CREATE_VCPU",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-kvm",
"type": "rectangle",
"x": 488.0,
"y": 60.0,
"width": 188.0,
"height": 88.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1294725949,
"version": 1,
"versionNonce": 774205501,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-kvm",
"type": "text",
"x": 498.0,
"y": 70.0,
"width": 168.0,
"height": 68.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 820201432,
"version": 1,
"versionNonce": 242634004,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "KVM\nstruct kvm_run\nKVM_GET_VCPU_MMAP_SIZE",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "KVM\nstruct kvm_run\nKVM_GET_VCPU_MMAP_SIZE",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-vfio",
"type": "rectangle",
"x": 507.0,
"y": 220.0,
"width": 150.0,
"height": 105.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 223861255,
"version": 1,
"versionNonce": 909671610,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-vfio",
"type": "text",
"x": 517.0,
"y": 230.0,
"width": 130.0,
"height": 85.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 588619913,
"version": 1,
"versionNonce": 1353122638,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "VFIO\nvfio-pci\nIOMMU 그룹\n/dev/vfio/vfio",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "VFIO\nvfio-pci\nIOMMU 그룹\n/dev/vfio/vfio",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-vhost",
"type": "rectangle",
"x": 507.0,
"y": 397.0,
"width": 150.0,
"height": 88.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1987300733,
"version": 1,
"versionNonce": 128975583,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-vhost",
"type": "text",
"x": 517.0,
"y": 407.0,
"width": 130.0,
"height": 68.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1610481447,
"version": 1,
"versionNonce": 1653011569,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "vhost\n리눅스 커널 구현\nvirtqueue 공유",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "vhost\n리눅스 커널 구현\nvirtqueue 공유",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-virtio-driver",
"type": "rectangle",
"x": 481.0,
"y": 557.0,
"width": 202.0,
"height": 88.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 858344171,
"version": 1,
"versionNonce": 1614418838,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-virtio-driver",
"type": "text",
"x": 491.0,
"y": 567.0,
"width": 182.0,
"height": 68.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1644546083,
"version": 1,
"versionNonce": 1597362718,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "게스트 virtio 드라이버\nvirtio-pci · virtio-mmio\nvirtqueue",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "게스트 virtio 드라이버\nvirtio-pci · virtio-mmio\nvirtqueue",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-physical-cpu",
"type": "rectangle",
"x": 843.0,
"y": 228.5,
"width": 195.0,
"height": 105.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 79723510,
"version": 1,
"versionNonce": 75896935,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-physical-cpu",
"type": "text",
"x": 853.0,
"y": 238.5,
"width": 175.0,
"height": 85.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 244061788,
"version": 1,
"versionNonce": 1572847054,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "물리 CPU\nVMX root · VMX non-root\nVM entry · VM exit\nguest-state 영역",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "물리 CPU\nVMX root · VMX non-root\nVM entry · VM exit\nguest-state 영역",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-pci-device",
"type": "rectangle",
"x": 865.5,
"y": 405.5,
"width": 150.0,
"height": 71.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 124646055,
"version": 1,
"versionNonce": 1524968011,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-pci-device",
"type": "text",
"x": 875.5,
"y": 415.5,
"width": 130.0,
"height": 51.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 956412321,
"version": 1,
"versionNonce": 1361554348,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "물리 PCI 장치\n게스트 직접 할당",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "물리 PCI 장치\n게스트 직접 할당",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-guest-code",
"type": "rectangle",
"x": 1198.0,
"y": 245.5,
"width": 150.0,
"height": 71.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1316201237,
"version": 1,
"versionNonce": 1955395610,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-guest-code",
"type": "text",
"x": 1208.0,
"y": 255.5,
"width": 130.0,
"height": 51.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 517895106,
"version": 1,
"versionNonce": 849887495,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "게스트 코드\nvCPU",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "게스트 코드\nvCPU",
"autoResize": true,
"lineHeight": 1.25
},
{
"id": "node-iommu",
"type": "rectangle",
"x": 1198.0,
"y": 388.5,
"width": 150.0,
"height": 71.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "#ffffff",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1289147613,
"version": 1,
"versionNonce": 1538872766,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false
},
{
"id": "node-label-iommu",
"type": "text",
"x": 1208.0,
"y": 398.5,
"width": 130.0,
"height": 51.0,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 1,
"strokeStyle": "solid",
"roughness": 0,
"opacity": 100,
"groupIds": [],
"frameId": null,
"index": null,
"roundness": {
"type": 3
},
"seed": 1510486535,
"version": 1,
"versionNonce": 1752225356,
"isDeleted": false,
"boundElements": [],
"updated": 0,
"link": null,
"locked": false,
"fontSize": 15,
"fontFamily": 5,
"text": "IOMMU\nDMA · 인터럽트 리매핑",
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "IOMMU\nDMA · 인터럽트 리매핑",
"autoResize": true,
"lineHeight": 1.25
}
],
"appState": {
"gridSize": 10,
"viewBackgroundColor": "#ffffff",
"currentItemFontFamily": 5
},
"files": {}
}