fix(setup): 실험대를 새로 세워 setup 35편을 밟고 어긋난 명령과 결과를 고친다
기반 가이드 7단계로 실험대를 철거하고 다시 세운 뒤 virtualization setup 9편과 keycloak-session-store 26편을 순서대로 밟았다. 24편은 끝까지, 11편은 되는 데까지 밟았고 밟은 범위를 편마다 적었다. 명령이 못 도는 것을 고쳤다. - kubectl 을 `kc-lab-1` 에서 치라고 적었는데 그 기계에 kubeconfig 가 없다. 라벨 639개와 각 편의 「어디서 치는가」를 `[lab host]` 로 옮겼다 - `-o custom-columns=…[0]…` 이 zsh 에서 글로브로 읽혀 안 돈다. 28곳에 따옴표 - busybox `sed` 가 끝 개행을 안 붙여 A-3 의 측정이 언제나 0 이었다 - `--token-file ~/node-token` 뒤에 그 파일을 지우면 k3s agent 가 재부팅을 못 견딘다. `/etc/rancher/node-token` 으로 옮기는 처방을 재서 넣었다 - 게스트에 없는 도구를 전제로 한 명령 넷 — `conntrack`·`dig`·`strings`·`nginx -v` - `echo` 와 JWT 헤더가 `"이름" : [ 값 ]` 으로 찍는데 문서는 공백 없이 옮겨 적어 그 실측으로 만든 grep·sed 가 한 줄도 못 잡는다 - B-0 이 `directAccessGrantsEnabled` 와 계정 완성을 빠뜨려 B-3 이 못 돈다 - D-4·D-4a 가 `test-server` 와 `certbot-renew.*` 를 가리키는데 실제로는 `kc-lab-edge` 의 `certbot.service` 다 - `virsh setmaxmem --config` 를 `dominfo` 로 판정하면 틀린다. `--inactive` 로 - `LIBVIRT_DEFAULT_URI` 를 rc 에만 넣으면 `ssh host '명령'` 에서 안 먹는다 결과가 조건부인 것을 갈랐다. - readiness 는 즉시 안 뒤집힌다. A-1·A-2 의 60초 창을 적었다 - 03 의 층 ②③ `301` 은 04 이후의 값이고 그 단계에서는 `404` 다 - A-0 의 로그 필터를 요청 직후에 치면 정반대 결론이 나온다 - A-5 의 한 방향 차단은 잠깐 `1` 이었다 `2` 로 돌아온다 증거는 두 프로젝트의 `evidence/raw/` 에 99벌을 README 와 함께 남겼다. 비밀은 길이만 적었고 화면에 찍힌 토큰은 가렸다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ab59130196
commit
024362d096
@@ -0,0 +1,124 @@
|
||||
// 저장 계획을 브라우저 문맥 안에서 보낸다.
|
||||
//
|
||||
// **왜 브라우저 안인가.** 세션 쿠키가 httpOnly 라 밖으로 못 읽고, 읽어서 옮기는 것은
|
||||
// 「비밀은 길이·존재 여부만」에 걸린다. `page.request` 는 그 브라우저 문맥의 쿠키를
|
||||
// 그대로 쓰므로 값이 이 프로세스 밖으로 나가지 않는다.
|
||||
//
|
||||
// **왜 계획을 그대로 안 보내나.** `studio-save.py` 의 계획은 `projectId`·`topicId` 를
|
||||
// `null` 로, `relations` 를 빈 배열로 낸다. 서버 저장은 부분 갱신이 아니라서 그대로
|
||||
// 보내면 **그 세 칸이 지워진다.** 그래서 저장 직전에 GET 으로 읽어 그 셋과
|
||||
// `variantIds` 는 서버 값을 쓰고, 기록이 갖는 칸만 계획 값으로 덮는다.
|
||||
//
|
||||
// **게시하지 않는다.** publish/unpublish 경로가 섞이면 그 편을 건너뛴다.
|
||||
|
||||
async (page) => {
|
||||
// 이 문맥은 샌드박스라 require 도 동적 import 도 안 된다. 그래서 계획은
|
||||
// 127.0.0.1 의 정적 서버에서 받아 온다 — page.request 는 CORS 를 안 탄다.
|
||||
const SUB = 'plans';
|
||||
const LOCAL = 'http://127.0.0.1:8731/' + SUB + '/';
|
||||
const getLocal = async (n) => {
|
||||
const r = await page.request.fetch(LOCAL + n);
|
||||
if (!r.ok()) throw new Error('계획을 못 받았다: ' + n + ' ' + r.status());
|
||||
return await r.json();
|
||||
};
|
||||
const files = await getLocal('_index.json');
|
||||
|
||||
// 기록이 소유하는 칸. 이것만 계획 값으로 덮는다.
|
||||
const OWNED = new Set([
|
||||
'kind', 'title', 'slug', 'summary',
|
||||
'problem', 'conclusion', 'environment', 'reproduction', 'bodyMarkdown', 'lastVerifiedOn',
|
||||
'basisVersion', 'pinnedVersions',
|
||||
'purpose', 'rules', 'applyWhen', 'exceptions', 'examples', 'verifiedOn',
|
||||
'facts', 'assumptions', 'unknowns', 'constraints', 'options', 'nextValidation',
|
||||
'resolution', 'questionStatus',
|
||||
]);
|
||||
// 서버가 정본인 칸. 계획이 뭐라 하든 서버 값을 쓴다.
|
||||
const SERVER_OWNED = ['projectId', 'topicId', 'relations', 'variantIds'];
|
||||
|
||||
const csrf = await page.evaluate(
|
||||
() => document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]+)/)?.[1] || null);
|
||||
if (!csrf) return { fatal: 'XSRF-TOKEN 쿠키가 없다 — 로그인 상태가 아니다' };
|
||||
|
||||
const api = async (method, url, body, headers) => {
|
||||
const r = await page.request.fetch('https://hyeonworks.com' + url, {
|
||||
method,
|
||||
headers: Object.assign({ accept: 'application/json' },
|
||||
body ? { 'content-type': 'application/json' } : {},
|
||||
headers || {}),
|
||||
data: body ? JSON.stringify(body) : undefined,
|
||||
});
|
||||
let j = null; try { j = await r.json(); } catch (e) { /* 204 는 본문이 없다 */ }
|
||||
return { status: r.status(), body: j };
|
||||
};
|
||||
|
||||
const results = [];
|
||||
for (const f of files) {
|
||||
const plan = await getLocal(f);
|
||||
const name = f.replace(/\.json$/, '');
|
||||
const put = plan.requests.find(r => r.method === 'PUT');
|
||||
if (!put) { results.push({ name, skipped: 'PUT 요청이 없다' }); continue; }
|
||||
if (plan.requests.some(r => /\/(publish|unpublish)(\/|$)/.test(r.path))) {
|
||||
results.push({ name, skipped: '게시 경로가 섞여 있다' }); continue;
|
||||
}
|
||||
const id = put.path.split('/').pop();
|
||||
|
||||
// ① 지금 상태를 읽는다
|
||||
const cur = await api('GET', put.path);
|
||||
if (cur.status !== 200) { results.push({ name, id, step: 'GET', status: cur.status }); continue; }
|
||||
const server = cur.body.data.document;
|
||||
const pub = cur.body.data.currentPublication;
|
||||
if (pub && pub.status === 'PUBLISHED') {
|
||||
results.push({ name, id, skipped: '게시된 문서다' }); continue;
|
||||
}
|
||||
|
||||
// ② 합친다 — 서버 값을 살리고 기록이 갖는 칸만 덮는다
|
||||
const planned = put.body.document;
|
||||
const doc = {};
|
||||
for (const [k, v] of Object.entries(planned)) if (OWNED.has(k)) doc[k] = v;
|
||||
for (const k of SERVER_OWNED) doc[k] = server[k];
|
||||
|
||||
// ③ 보낸다
|
||||
const res = await api('PUT', put.path,
|
||||
{ expectedVersion: server.version, document: doc },
|
||||
{ 'x-csrf-token': csrf,
|
||||
'idempotency-key': (put.headers && put.headers['Idempotency-Key']) || ('send-' + id + '-' + Date.now()) });
|
||||
|
||||
if (res.status !== 200) {
|
||||
results.push({ name, id, step: 'PUT', status: res.status,
|
||||
code: res.body && res.body.error && res.body.error.code });
|
||||
continue;
|
||||
}
|
||||
|
||||
// ④ 되읽어 대조한다
|
||||
const back = await api('GET', put.path);
|
||||
const b = back.body.data.document;
|
||||
results.push({
|
||||
name, id, kind: server.kind,
|
||||
status: 200,
|
||||
versionBefore: server.version, versionAfter: b.version,
|
||||
bodyMatches: (b.bodyMarkdown || '') === (doc.bodyMarkdown || ''),
|
||||
titleMatches: b.title === doc.title,
|
||||
summaryMatches: b.summary === doc.summary,
|
||||
keptProject: b.projectId === server.projectId,
|
||||
keptTopic: b.topicId === server.topicId,
|
||||
keptRelations: (b.relations || []).length === (server.relations || []).length,
|
||||
stillUnpublished: !back.body.data.currentPublication,
|
||||
});
|
||||
}
|
||||
|
||||
const ok = results.filter(r => r.status === 200);
|
||||
return {
|
||||
total: files.length,
|
||||
saved: ok.length,
|
||||
skipped: results.filter(r => r.skipped).length,
|
||||
failed: results.filter(r => r.status && r.status !== 200).length,
|
||||
bodyMismatch: ok.filter(r => !r.bodyMatches).length,
|
||||
lostProject: ok.filter(r => !r.keptProject).length,
|
||||
lostTopic: ok.filter(r => !r.keptTopic).length,
|
||||
lostRelations: ok.filter(r => !r.keptRelations).length,
|
||||
becamePublished: ok.filter(r => !r.stillUnpublished).length,
|
||||
problems: results.filter(r => r.skipped || (r.status && r.status !== 200)
|
||||
|| (r.status === 200 && (!r.bodyMatches || !r.keptProject
|
||||
|| !r.keptTopic || !r.keptRelations || !r.stillUnpublished))),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,695 @@
|
||||
{
|
||||
"count": 138,
|
||||
"byId": {
|
||||
"8d6b8a7f-e08e-4c9f-9772-a14a9d569260": {
|
||||
"kind": "SETUP",
|
||||
"title": "TTL 로 고아 세션을 골라내 지운다",
|
||||
"version": null
|
||||
},
|
||||
"d53181b9-bb28-4703-97ed-98adfb5b18dc": {
|
||||
"kind": "SETUP",
|
||||
"title": "cookie secret 을 갈아치우고 로그인해 있던 세션이 어떻게 되는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"9bb0b051-c158-497f-a744-b24769c93783": {
|
||||
"kind": "SETUP",
|
||||
"title": "신원 헤더를 위조해 보내고 어디까지 도착하는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"cf2e783c-424b-4167-aa27-3bd6b5f46ee2": {
|
||||
"kind": "SETUP",
|
||||
"title": "flannel.1 에 200ms 를 넣고 커넥션 풀이 고갈되는 것을 본다",
|
||||
"version": null
|
||||
},
|
||||
"b90d719f-39fb-4bab-a263-0e32eedb2b36": {
|
||||
"kind": "SETUP",
|
||||
"title": "한 방향만 끊어 보고 raw PREROUTING 까지 내려간다",
|
||||
"version": null
|
||||
},
|
||||
"d845adc8-be2c-4471-aa1d-7e4db864c471": {
|
||||
"kind": "SETUP",
|
||||
"title": "기계 전원을 뽑고 쿠버네티스가 알아채는 시각을 잰다",
|
||||
"version": null
|
||||
},
|
||||
"91ce17ad-758d-4a63-be5b-489786609557": {
|
||||
"kind": "SETUP",
|
||||
"title": "PostgreSQL 을 진짜로 크래시시키고 잃은 로그인을 센다",
|
||||
"version": null
|
||||
},
|
||||
"bf169fef-f900-4247-88f8-427742ae3fe9": {
|
||||
"kind": "SETUP",
|
||||
"title": "PostgreSQL 을 정상 종료시키고 네 경로를 잰다",
|
||||
"version": null
|
||||
},
|
||||
"4f32b469-185a-4dea-8eba-599864a3b476": {
|
||||
"kind": "SETUP",
|
||||
"title": "deploy 훅 파일 하나를 넣고 nginx 워커가 저절로 갈리는지 확인한다",
|
||||
"version": null
|
||||
},
|
||||
"9349a3fe-5234-48ae-af9f-029ffc0d2296": {
|
||||
"kind": "SETUP",
|
||||
"title": "인증서를 강제로 갱신하고 밖에서 보이는 일련번호가 언제 바뀌는지 잰다",
|
||||
"version": null
|
||||
},
|
||||
"186443e8-a32a-4a94-8609-845a4247d120": {
|
||||
"kind": "SETUP",
|
||||
"title": "카나리아 Secret 을 심고 네 경로에서 평문이 어디까지 나오는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"e53c5947-e1df-400a-ad79-e9d55b1da452": {
|
||||
"kind": "SETUP",
|
||||
"title": "이미지 태그를 올렸다 내리며 롤백이 언제 막히는지 가른다",
|
||||
"version": null
|
||||
},
|
||||
"7dc48b91-e31b-455c-9a9d-c766f95ff491": {
|
||||
"kind": "SETUP",
|
||||
"title": "스키마를 통째로 지우고 덤프 하나로 되살아나는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"5296a106-4c42-437d-b721-33a5e53a045c": {
|
||||
"kind": "SETUP",
|
||||
"title": "IdP 쪽에만 로그아웃 주소를 넣고 한쪽만 고치면 안 퍼지는 것을 확인한다",
|
||||
"version": null
|
||||
},
|
||||
"3421185f-5f3c-4263-9455-6243306e9fc9": {
|
||||
"kind": "SETUP",
|
||||
"title": "두 앱을 한 로그인으로 묶고 IdP 세션만 끊어 앱 세션이 남는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"7447ccbf-1800-43a4-a9d2-8ac774965c4b": {
|
||||
"kind": "SETUP",
|
||||
"title": "서명 키를 더한 뒤 옛 키를 지우고 옛 토큰이 언제 끊기는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"af9645a0-8ca8-481d-9624-69fce6449b7c": {
|
||||
"kind": "SETUP",
|
||||
"title": "Redis 를 0대로 내리고 파드가 Ready 를 유지하는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"405c4206-9b59-491f-aed1-8b97cfd9f584": {
|
||||
"kind": "SETUP",
|
||||
"title": "같은 refresh token 다섯 개를 동시에 던지고 client session 을 센다",
|
||||
"version": null
|
||||
},
|
||||
"df2ee798-7f31-4570-a355-11f96c0eea84": {
|
||||
"kind": "SETUP",
|
||||
"title": "토큰을 PostgreSQL 로 옮기고 기본키와 로그아웃 정리를 확인한다",
|
||||
"version": null
|
||||
},
|
||||
"1e5d05fa-88f4-4ef5-a402-4a520ae4a52d": {
|
||||
"kind": "SETUP",
|
||||
"title": "Redis 를 붙이고 무엇이 옮겨졌는지 빈 목록으로 견준다",
|
||||
"version": null
|
||||
},
|
||||
"4ef91d43-1f1d-481a-8b6f-5e015d068578": {
|
||||
"kind": "SETUP",
|
||||
"title": "아무 저장소도 주지 않고 Spring 이 무엇을 고르는지 찍어서 확인한다",
|
||||
"version": null
|
||||
},
|
||||
"975a6d61-4e34-4034-a0d2-01fea3b498a3": {
|
||||
"kind": "SETUP",
|
||||
"title": "DNS-01 으로 와일드카드 인증서를 받고 갱신이 서빙까지 닿게 한다",
|
||||
"version": null
|
||||
},
|
||||
"0cb0f195-b06b-4f8e-b52e-675eb0918805": {
|
||||
"kind": "SETUP",
|
||||
"title": "Prometheus 와 Grafana 를 올려 클러스터 안을 밖에서 본다",
|
||||
"version": null
|
||||
},
|
||||
"7c66a553-0008-4294-a27a-687bd1bda0c1": {
|
||||
"kind": "SETUP",
|
||||
"title": "lab host 에 가상화 패키지를 깔고 virsh 가 sudo 없이 돌게 만든다",
|
||||
"version": null
|
||||
},
|
||||
"7b113a04-180a-40ec-9270-033531c22221": {
|
||||
"kind": "SETUP",
|
||||
"title": "Keycloak 2노드와 PostgreSQL 을 k3s 에 올리고 클러스터가 묶였는지 확인한다",
|
||||
"version": null
|
||||
},
|
||||
"5e629c2f-e653-4dd9-b1c9-1fe6b2bb181d": {
|
||||
"kind": "SETUP",
|
||||
"title": "k3s server 와 agent 를 게스트 두 대에 깔고 lab host 에서 kubectl 로 본다",
|
||||
"version": null
|
||||
},
|
||||
"74a7bacf-e5d8-4129-926a-c8cf5cacb8c9": {
|
||||
"kind": "SETUP",
|
||||
"title": "엣지 게스트에 nginx 를 세우고 호스트 DNAT 으로 밖에서 들어오는 길을 연다",
|
||||
"version": null
|
||||
},
|
||||
"f972ca27-7e18-41c1-9494-59cc6f676ae2": {
|
||||
"kind": "SETUP",
|
||||
"title": "cloud-init 시드로 게스트 세 대를 만들고 SSH 가 키로 붙게 한다",
|
||||
"version": null
|
||||
},
|
||||
"0b64d23a-f82a-44b4-ad54-e079578977c4": {
|
||||
"kind": "SETUP",
|
||||
"title": "롤링 재시작을 걸고 재시작 전 토큰이 통하는지 본다",
|
||||
"version": null
|
||||
},
|
||||
"21dce25a-a165-47dc-bb40-2ed9f6f9efea": {
|
||||
"kind": "SETUP",
|
||||
"title": "문장 로깅으로 그 500 을 낸 SQL 을 확정하고 캐시 온도 셋을 재현한다",
|
||||
"version": null
|
||||
},
|
||||
"b8d7db33-afdc-4e49-9eab-ed4edbbe398e": {
|
||||
"kind": "SETUP",
|
||||
"title": "persistent-user-sessions 를 끄고 A층 결론 넷을 다시 잰다",
|
||||
"version": null
|
||||
},
|
||||
"95e29500-b535-4246-86db-d569ed814904": {
|
||||
"kind": "SETUP",
|
||||
"title": "7800 을 막고 디스커버리와 트랜스포트를 갈라 끊는다",
|
||||
"version": null
|
||||
},
|
||||
"4f56ed58-fc82-4ed1-ac87-c356b30c34f7": {
|
||||
"kind": "SETUP",
|
||||
"title": "세션을 공유하는 것이 Infinispan 인지 PostgreSQL 인지 손으로 가른다",
|
||||
"version": null
|
||||
},
|
||||
"3b05c1f0-13e9-414a-97a6-2078fb4bab26": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Guest 의 write() 요청부터 virtqueue까지",
|
||||
"version": null
|
||||
},
|
||||
"5b1de31c-0495-4226-8607-73ed7284b314": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Guest 의 packet에서 Host Physical NIC까지",
|
||||
"version": null
|
||||
},
|
||||
"5bcae89b-0873-4a2b-af4a-10e5234c085b": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "KVM 에서 vCPU 가 물리 CPU 에서 실행되기까지",
|
||||
"version": null
|
||||
},
|
||||
"ecaaa37d-7b33-4cbf-9bc5-4c6caad14ee5": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "VM 아래에 한 번 더 있는 Host block stack — blk-mq · I/O Scheduler · NVMe",
|
||||
"version": null
|
||||
},
|
||||
"8fafaeea-8746-4537-87a4-679a3a91aa4c": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "완료라는 말의 네 가지 뜻 — write · writeback · flush · 전원 장애 생존",
|
||||
"version": null
|
||||
},
|
||||
"eead2379-94fe-463a-9e5e-06a01bf2105d": {
|
||||
"kind": "QUESTION",
|
||||
"title": "disk image 는 최종적으로 어느 Host block device 위에 있는가",
|
||||
"version": null
|
||||
},
|
||||
"480f86ac-86fb-4290-9bf5-584763aa1363": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 VM 들의 QEMU disk cache mode 는 무엇인가",
|
||||
"version": null
|
||||
},
|
||||
"decbab8d-9c98-45c6-b5b8-e6162e407299": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "빨라진 구성이 durability contract 를 지운 것은 아닌지 먼저 가른다",
|
||||
"version": null
|
||||
},
|
||||
"b1cda8c4-d31d-4ae4-a4d9-4103a0ab3109": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "지연 원인을 CPU 로 읽기 전에 storage 계층을 따로 잰다",
|
||||
"version": null
|
||||
},
|
||||
"ed64d4ff-aa01-48cc-ae68-6a683b025cde": {
|
||||
"kind": "QUESTION",
|
||||
"title": "VM1 의 storage 부하가 VM2 의 지연을 실제로 밀어 올리는가",
|
||||
"version": null
|
||||
},
|
||||
"77aa0188-5c2b-4f47-bda7-7c66b084968d": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트의 I/O Scheduler 는 무엇인가",
|
||||
"version": null
|
||||
},
|
||||
"be3c2c58-1ed4-4eae-876a-3114faa61c94": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Guest 의 fsync() 지연과 Host storage 지연은 같이 오르는가",
|
||||
"version": null
|
||||
},
|
||||
"892b6087-8961-486c-b4d9-d3dd46bc2605": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "/dev/vda 뒤에 있는 것 — qcow2 · RAW · Host block device",
|
||||
"version": null
|
||||
},
|
||||
"ae69e2e1-1a3b-4ae3-ae2a-572af07b95d7": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 disk image 는 qcow2 인가 RAW 인가, 그리고 Guest 가 보는 크기와 Host 가 실제로 쓰는 크기는 얼마나 다른가",
|
||||
"version": null
|
||||
},
|
||||
"1f76d54b-bb17-4174-8128-0c2d71d4256f": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트의 /dev/vda 는 어떤 backend 에 붙어 있는가",
|
||||
"version": null
|
||||
},
|
||||
"274c5636-33f6-4c19-a54b-d2a96af31289": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Guest 안에서 본 disk 로 backend 를 단정하지 않는다",
|
||||
"version": null
|
||||
},
|
||||
"484fd832-c7d3-413e-897a-97892e4e10ac": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트에서 vhost-net 이 실제로 packet datapath 를 맡고 있는가",
|
||||
"version": null
|
||||
},
|
||||
"397c4789-0272-449b-86d6-2c4a3a122401": {
|
||||
"kind": "QUESTION",
|
||||
"title": "VM1 과 VM2 의 TAP/vnet interface 는 무엇이고 어디에 붙어 있는가",
|
||||
"version": null
|
||||
},
|
||||
"38716d7f-1aa1-48d8-ab4c-3fc505332128": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트의 가상 머신 네트워크는 Bridge 인가 NAT 인가 Routing 인가",
|
||||
"version": null
|
||||
},
|
||||
"ca36f0db-9028-4761-91a8-afb7eb30f2b9": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Keycloak 실험 결과를 애플리케이션 원인으로 읽기 전에 network 계층을 따로 검증한다",
|
||||
"version": null
|
||||
},
|
||||
"68a848c7-eaff-4421-ad25-de21673ca40c": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "packet 이 어디서 끊겼는지는 계층마다 capture 해서 가른다",
|
||||
"version": null
|
||||
},
|
||||
"79ac61d6-cbe6-483b-9961-02ca8c02b5c2": {
|
||||
"kind": "QUESTION",
|
||||
"title": "부하 중 network 가상화가 지연을 바꿀 만큼 호스트 CPU 를 쓰는가",
|
||||
"version": null
|
||||
},
|
||||
"600a2621-f6d8-42df-9629-7db65011545d": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Host Nginx 에서 Keycloak 까지 packet 은 실제로 어디를 지나는가",
|
||||
"version": null
|
||||
},
|
||||
"1a996f8d-b04e-49d2-88ef-4877e21f7c0e": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 가상 머신들의 virtio-net 에 multi-queue 가 켜져 있는가",
|
||||
"version": null
|
||||
},
|
||||
"bded6560-dc8d-473d-966c-5b037bb84c4c": {
|
||||
"kind": "QUESTION",
|
||||
"title": "QEMU backend 와 vhost-net 의 차이가 이 호스트에서 실제로 보이는가",
|
||||
"version": null
|
||||
},
|
||||
"32d0be7d-d88e-4760-8d91-35d3a233a99a": {
|
||||
"kind": "CASE",
|
||||
"title": "Fetch 타입이 아닌 조회 방식으로 인한 N+1",
|
||||
"version": null
|
||||
},
|
||||
"c1158754-e3d2-47b8-bb41-81787c0ca84b": {
|
||||
"kind": "CASE",
|
||||
"title": "Collection Fetch Join Pagination의 In-memory Paging",
|
||||
"version": null
|
||||
},
|
||||
"1b59e6de-16f1-42b2-81bb-01d6198e34bf": {
|
||||
"kind": "QUESTION",
|
||||
"title": "QEMU 메모리는 vCPU 가 도는 NUMA node 와 같은 node 에 있는가",
|
||||
"version": null
|
||||
},
|
||||
"6a60abe7-ea2c-46c2-bb9f-8281bfbe9644": {
|
||||
"kind": "QUESTION",
|
||||
"title": "balloon target 을 바꾸면 게스트가 쓸 수 있는 메모리는 어떻게 따라 움직이는가",
|
||||
"version": null
|
||||
},
|
||||
"a05fe2a6-eb7c-4bcc-a7da-58e729436468": {
|
||||
"kind": "QUESTION",
|
||||
"title": "호스트 메모리 압박이 게스트 애플리케이션 지연을 실제로 밀어 올리는가",
|
||||
"version": null
|
||||
},
|
||||
"380d4975-3be5-451d-aede-2e24c5a2a09e": {
|
||||
"kind": "QUESTION",
|
||||
"title": "NUMA remote access 가 이 작업의 지연을 실제로 바꾸는가",
|
||||
"version": null
|
||||
},
|
||||
"63aef96b-03ef-4dbd-9ba6-9e61c6e695e1": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 가상 머신들에 virtio-balloon 이 붙어 있는가",
|
||||
"version": null
|
||||
},
|
||||
"074a1cb4-cea8-4dad-bc4c-899692ff9aa9": {
|
||||
"kind": "QUESTION",
|
||||
"title": "게스트 page fault 증가는 workload 변화를 따라가는가",
|
||||
"version": null
|
||||
},
|
||||
"a2cbc828-59ab-4e70-916a-d053e71960ae": {
|
||||
"kind": "QUESTION",
|
||||
"title": "호스트 major fault 와 스토리지 지연은 같은 시간축에서 함께 움직이는가",
|
||||
"version": null
|
||||
},
|
||||
"50730203-df5f-4604-8535-7e93ab6fb724": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트의 THP 정책과 huge page 상태는 무엇인가",
|
||||
"version": null
|
||||
},
|
||||
"fa5b3782-9fcf-4113-8f51-a55c8023b2db": {
|
||||
"kind": "QUESTION",
|
||||
"title": "QEMU 프로세스가 실제로 붙잡고 있는 호스트 메모리는 얼마이고 어떻게 나뉘어 있는가",
|
||||
"version": null
|
||||
},
|
||||
"67285d51-7eaf-4540-9577-cfd0b273b40e": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트의 가상 머신들은 설정한 메모리와 지금 잡고 있는 메모리가 얼마나 다른가",
|
||||
"version": null
|
||||
},
|
||||
"63fa33e5-9957-4d28-8d3c-c75735a73bd6": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "메모리 증상 하나로 계층을 단정하지 않는다",
|
||||
"version": null
|
||||
},
|
||||
"ded41b52-ec08-4231-a54c-86d6c80d38f0": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "메모리 실험 결과에는 Host · VM · Workload 조건을 함께 남긴다",
|
||||
"version": null
|
||||
},
|
||||
"f460e9a2-35ef-46ff-81cf-b36627a1b231": {
|
||||
"kind": "QUESTION",
|
||||
"title": "가상 머신 RAM 이 HugeTLB 로 명시적으로 backing 되어 있는가",
|
||||
"version": null
|
||||
},
|
||||
"d3e8501f-e1b5-4f8f-aa9a-89f9c89a308e": {
|
||||
"kind": "QUESTION",
|
||||
"title": "지금 게스트와 호스트에서 swap 이 실제로 오가고 있는가",
|
||||
"version": null
|
||||
},
|
||||
"647d6d11-5bb2-4028-a530-b10c8925aa11": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Host 메모리 압박이 Guest 와 스토리지까지 내려가는 경로",
|
||||
"version": null
|
||||
},
|
||||
"68811272-5352-4409-aa20-7e22e601ede8": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "NUMA 에서는 vCPU 배치와 메모리 배치를 함께 본다",
|
||||
"version": null
|
||||
},
|
||||
"ebdf93d7-2dcb-4fc8-91b9-2364ac8196e6": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "virtio-balloon 이 Guest 메모리를 회수하고 돌려주는 방식",
|
||||
"version": null
|
||||
},
|
||||
"2f2ffafc-91ff-4971-a6a8-7c0e7d844ca2": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Guest 메모리 주소가 물리 RAM 에 닿기까지 — GVA · GPA · HPA",
|
||||
"version": null
|
||||
},
|
||||
"efce9a6e-5f5d-45ec-86e5-056d8cb1b8d2": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Huge Page 를 VM 에서 볼 때 갈라지는 세 자리",
|
||||
"version": null
|
||||
},
|
||||
"e80853fa-98b8-4cc3-a2df-427c7147794b": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "VM 에서 page fault 는 세 계층에서 따로 일어난다",
|
||||
"version": null
|
||||
},
|
||||
"688c6c02-c1bd-4cd2-a615-2396db145386": {
|
||||
"kind": "QUESTION",
|
||||
"title": "이 호스트의 NUMA 토폴로지는 가상 머신 성능을 고려해야 할 구조인가",
|
||||
"version": null
|
||||
},
|
||||
"d103bb81-45df-402f-86e5-e41d66ed7f8d": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Keycloak 작업의 VM Exit 분포는 idle · CPU-bound · I/O-bound 와 어떻게 다른가",
|
||||
"version": null
|
||||
},
|
||||
"62319064-17ef-4b2f-bf8b-e363cd0e36a6": {
|
||||
"kind": "QUESTION",
|
||||
"title": "CPU pinning 전후로 Keycloak 지연과 vCPU 스케줄링 변동이 달라지는가",
|
||||
"version": null
|
||||
},
|
||||
"116b806c-b176-401c-9363-1489fffb721c": {
|
||||
"kind": "QUESTION",
|
||||
"title": "cgroup CPU 제한과 호스트 vCPU 경쟁을 지표로 가를 수 있는가",
|
||||
"version": null
|
||||
},
|
||||
"723d8930-9e82-4552-8376-038a6446ec71": {
|
||||
"kind": "QUESTION",
|
||||
"title": "vCPU 를 늘릴수록 이 호스트에서 Keycloak 처리량도 계속 오르는가",
|
||||
"version": null
|
||||
},
|
||||
"2d058fb5-01f1-4be8-80bb-0e377868573c": {
|
||||
"kind": "QUESTION",
|
||||
"title": "가상 머신 두 대를 CPU-bound 로 만들면 게스트 steal time 은 얼마나 오르는가",
|
||||
"version": null
|
||||
},
|
||||
"2acec7d5-3eaf-4115-9d61-45647c4ec01e": {
|
||||
"kind": "QUESTION",
|
||||
"title": "운영 서버는 CPU 가상화 계층의 영향을 받는 구조인가",
|
||||
"version": null
|
||||
},
|
||||
"cd58d35d-3a93-4682-82b8-b64ce3a8813c": {
|
||||
"kind": "QUESTION",
|
||||
"title": "pinning 없이 vCPU 스레드는 호스트 논리 CPU 사이를 옮겨 다니는가",
|
||||
"version": null
|
||||
},
|
||||
"61b7486f-5dab-41df-8f4f-e8fc21d88617": {
|
||||
"kind": "QUESTION",
|
||||
"title": "실제 작업에서 주로 발생하는 VM Exit 은 무엇인가",
|
||||
"version": null
|
||||
},
|
||||
"4a2d3332-81c3-44fa-a4fb-216a41abb504": {
|
||||
"kind": "QUESTION",
|
||||
"title": "게스트가 유휴 상태일 때 vCPU 스레드는 이 테스트 환경에서 어떻게 보이는가",
|
||||
"version": null
|
||||
},
|
||||
"da3a7b56-5691-4a9f-90c5-3a1a5d0f0013": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Keycloak 동시 refresh 실험 중 CPU 가상화 계층이 결과를 흔들 만큼 포화되는가",
|
||||
"version": null
|
||||
},
|
||||
"eba4a877-276a-4050-9a97-d32614546c71": {
|
||||
"kind": "QUESTION",
|
||||
"title": "가상 머신 두 대에 동시에 부하를 주면 이 호스트에서 vCPU 경쟁이 실제로 생기는가",
|
||||
"version": null
|
||||
},
|
||||
"a0e1cc05-92b3-4dac-bce1-513ab8cd862b": {
|
||||
"kind": "CASE",
|
||||
"title": "Forward-Auth에서 Client가 보낸 Identity Header를 신뢰하면 안 되는 이유",
|
||||
"version": null
|
||||
},
|
||||
"488ce49b-afa4-42a5-a2ce-de2e0653cd82": {
|
||||
"kind": "CASE",
|
||||
"title": "Refresh Token 관리만 서버로 이전, Access Token은 여전히 Browser에 노출",
|
||||
"version": null
|
||||
},
|
||||
"bf675775-4f3e-4744-8014-f0efff51422a": {
|
||||
"kind": "CASE",
|
||||
"title": "SPA에서 OAuth Token을 JavaScript Memory에 보관한 경우",
|
||||
"version": null
|
||||
},
|
||||
"036563a1-3a43-4931-a017-0e693b591e89": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "패턴 검증을 실제로 돌릴 때의 안전한 순서",
|
||||
"version": null
|
||||
},
|
||||
"4c9c3b90-bc89-4300-9334-088ea95d37d8": {
|
||||
"kind": "CASE",
|
||||
"title": "Projection 이후에도 1,509행을 읽은 Row Over-fetch",
|
||||
"version": null
|
||||
},
|
||||
"7ed75172-fd56-42bf-956a-8f9fc1cca235": {
|
||||
"kind": "CASE",
|
||||
"title": "Collection Fetch Join으로 N+1을 해결하다 만난 MultiBag예외와 행 폭증 문제",
|
||||
"version": null
|
||||
},
|
||||
"a3493786-d3fb-4b01-b1c5-ecb23c3d5497": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Forward-Auth와 Nginx auth_request의 동작",
|
||||
"version": null
|
||||
},
|
||||
"5c8f12d5-1ead-469b-8e91-2de69401df48": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Cookie로 인증하는 요청에서 CSRF token이 하는 일",
|
||||
"version": null
|
||||
},
|
||||
"d85bd6af-7599-4ef7-9407-6609927d5b5c": {
|
||||
"kind": "CASE",
|
||||
"title": "Browser Token을 없애면서 BFF에 Session과 CSRF 책임이 생긴 과정",
|
||||
"version": null
|
||||
},
|
||||
"e1e0e2a0-c6b6-45bf-be42-f697ba5e2fff": {
|
||||
"kind": "QUESTION",
|
||||
"title": "ANALYZE 이후 Cardinality Estimate는 어떻게 달라지는가",
|
||||
"version": null
|
||||
},
|
||||
"5159c415-232d-424a-970a-b0db52746767": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Round Trip과 Row Volume을 독립 측정할 것인가",
|
||||
"version": null
|
||||
},
|
||||
"b0b55ac9-c0a3-4c01-ba84-0aa478923ace": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "JPA N+1 정량 진단 기준",
|
||||
"version": null
|
||||
},
|
||||
"ae6c9bea-d3a3-46e1-bbd4-8d580d336394": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "Query Plan은 실제 PostgreSQL에서 측정한다",
|
||||
"version": null
|
||||
},
|
||||
"d99fdec9-fe9e-4e0f-a50b-6fb9b9ed5719": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "외부 IdP Brokering의 동작",
|
||||
"version": null
|
||||
},
|
||||
"bf5f2462-0e94-4723-bdc8-f7dd709b2dbb": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Top-N-per-group 선택 기준",
|
||||
"version": null
|
||||
},
|
||||
"e8c2e9ea-cd87-46f8-9469-849dbd433d86": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "PostgreSQL Query Plan 측정 기준",
|
||||
"version": null
|
||||
},
|
||||
"06788903-3dfa-4f70-b159-f1224384fd0b": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Keyset Pagination 설계 기준",
|
||||
"version": null
|
||||
},
|
||||
"51095f6e-2cc8-439c-8648-065033614215": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Fetch Type과 Fetch Strategy 구분",
|
||||
"version": null
|
||||
},
|
||||
"db99cbc5-9123-4599-b368-39ff3170e81d": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Fetch Join · Batch · Projection 선택 기준",
|
||||
"version": null
|
||||
},
|
||||
"635fcedd-d402-4297-bcf3-9fcdf4200d28": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Feed Visibility Query Pattern",
|
||||
"version": null
|
||||
},
|
||||
"30a37f34-b406-4061-b924-e22e0be0c3bf": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "화면 조회는 Read Projection을 사용한다",
|
||||
"version": null
|
||||
},
|
||||
"4e3200c8-eff5-4442-ae84-ae7b7fa92c8b": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "Query Strategy는 FeedQueryPort 뒤에서 소유한다",
|
||||
"version": null
|
||||
},
|
||||
"5e4d033c-d6fe-4257-a4dc-1ade44473c72": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "Collection Fetch Join과 Pagination을 같이 사용하지 않는다",
|
||||
"version": null
|
||||
},
|
||||
"1dbce381-f0dc-4d49-ad68-bd31d205677e": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "Feed Pagination은 Keyset을 사용한다",
|
||||
"version": null
|
||||
},
|
||||
"7f248f68-ce2b-43ec-94ce-82324d0bd1a7": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "현재 Read Model은 CQRS-lite로 유지한다",
|
||||
"version": null
|
||||
},
|
||||
"08a74b35-10c3-4874-8fbc-209b0b6e942e": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "Entity Graph 조회에는 Batch Fetch를 사용한다",
|
||||
"version": null
|
||||
},
|
||||
"5088ce14-b096-41d3-abba-64b7afb48bb9": {
|
||||
"kind": "QUESTION",
|
||||
"title": "feed_visible을 Production CQRS로 승격할 것인가",
|
||||
"version": null
|
||||
},
|
||||
"b099ca65-bf9f-4d61-814c-74722453fa3c": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Highlight 없는 FeedItem을 허용할 것인가",
|
||||
"version": null
|
||||
},
|
||||
"6cbe963f-86f8-4df6-be5a-900712970d01": {
|
||||
"kind": "QUESTION",
|
||||
"title": "실제 동시 트래픽에서도 이 구조가 안정적인가",
|
||||
"version": null
|
||||
},
|
||||
"e6715e81-6dbd-4287-8e19-946c334f38fb": {
|
||||
"kind": "CASE",
|
||||
"title": "Visibility OR이 Keyset Index를 깨뜨린 문제",
|
||||
"version": null
|
||||
},
|
||||
"3f886154-1b85-407b-bda4-57d28370e745": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "OAuth/OIDC 인증 패턴 선택 기준",
|
||||
"version": null
|
||||
},
|
||||
"19b55c39-c583-4161-9775-df954280a568": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "BFF가 OAuth Token을 관리하는 조건",
|
||||
"version": null
|
||||
},
|
||||
"7ff40767-a00b-4db2-98f6-0cdfce8c8936": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Forward-Auth 구조에서 Application Authorization을 어디까지 Edge에 둘 것인가",
|
||||
"version": null
|
||||
},
|
||||
"18a5cde2-dd1e-4bff-9f1c-997577ae438f": {
|
||||
"kind": "QUESTION",
|
||||
"title": "BFF의 Session과 OAuth2AuthorizedClient를 어디에 저장할 것인가",
|
||||
"version": null
|
||||
},
|
||||
"66c18e42-116c-459f-86bd-b7e4bf394866": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "OAuth Token과 Application Session을 구분하는 기준",
|
||||
"version": null
|
||||
},
|
||||
"97eddd97-1096-426a-a2c6-a6c5bf1cd09f": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "BFF 인증 구조 설계 기준",
|
||||
"version": null
|
||||
},
|
||||
"004dd0a2-5fb3-4f25-80c9-576f709de331": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Forward-Auth에서 Identity Header를 신뢰하기 위한 조건",
|
||||
"version": null
|
||||
},
|
||||
"1a00a640-8987-4075-a9e4-7ec023cdffbb": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "외부 IdP 연동과 Application 인증 구조의 경계",
|
||||
"version": null
|
||||
},
|
||||
"ede6b9ce-eeed-40c8-9175-9e8116029395": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Public Client와 Confidential Client 구분 기준",
|
||||
"version": null
|
||||
},
|
||||
"c72656b5-842d-45d9-b5f6-82b66b09d0b9": {
|
||||
"kind": "QUESTION",
|
||||
"title": "서버 세션 기반 인증 구조는 다중 인스턴스에서 어떻게 운영할 것인가",
|
||||
"version": null
|
||||
},
|
||||
"bb5c37ae-2d94-48f7-ad4e-a37c61c3fd07": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "브라우저가 credential을 보관하는 위치와 그 성질",
|
||||
"version": null
|
||||
},
|
||||
"87000d59-b69f-4010-9481-0b71c8bde32d": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Bearer JWT가 인증된 principal이 되기까지",
|
||||
"version": null
|
||||
},
|
||||
"75c6c657-3e03-47a0-a9d0-5637fce9dd3f": {
|
||||
"kind": "CONCEPT",
|
||||
"title": "Authorization Code와 PKCE가 보호하는 구간",
|
||||
"version": null
|
||||
},
|
||||
"8c1ebea7-204e-445c-9812-0421d9eb0e9c": {
|
||||
"kind": "PROJECT_DECISION",
|
||||
"title": "외부 IdP와의 연동이라도 별도의 인증 방식이 아니다.",
|
||||
"version": null
|
||||
},
|
||||
"9ae4ec71-a32e-49a7-88c2-f7368541c28d": {
|
||||
"kind": "QUESTION",
|
||||
"title": "Refresh Token Rotation과 다중 Replica 경쟁을 어떻게 처리할 것인가",
|
||||
"version": null
|
||||
},
|
||||
"39fdf472-82c4-43ed-abec-73de672f08ae": {
|
||||
"kind": "REFERENCE",
|
||||
"title": "Authorization Code Flow의 Endpoint와 Credential 이동 기준",
|
||||
"version": null
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,790 @@
|
||||
{
|
||||
"asked": 87,
|
||||
"missing": 0,
|
||||
"published": 2,
|
||||
"byId": {
|
||||
"bf169fef-f900-4247-88f8-427742ae3fe9": {
|
||||
"kind": "SETUP",
|
||||
"version": 4,
|
||||
"slug": "reproduce-a2-database-loss",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "f2183920-6573-4148-90ae-8a510500d862",
|
||||
"relations": 0
|
||||
},
|
||||
"91ce17ad-758d-4a63-be5b-489786609557": {
|
||||
"kind": "SETUP",
|
||||
"version": 4,
|
||||
"slug": "reproduce-a3-database-crash",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "f2183920-6573-4148-90ae-8a510500d862",
|
||||
"relations": 0
|
||||
},
|
||||
"d845adc8-be2c-4471-aa1d-7e4db864c471": {
|
||||
"kind": "SETUP",
|
||||
"version": 4,
|
||||
"slug": "reproduce-a4-node-loss",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "f2183920-6573-4148-90ae-8a510500d862",
|
||||
"relations": 0
|
||||
},
|
||||
"b90d719f-39fb-4bab-a263-0e32eedb2b36": {
|
||||
"kind": "SETUP",
|
||||
"version": 4,
|
||||
"slug": "reproduce-a5-asymmetric-partition",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "f2183920-6573-4148-90ae-8a510500d862",
|
||||
"relations": 0
|
||||
},
|
||||
"cf2e783c-424b-4167-aa27-3bd6b5f46ee2": {
|
||||
"kind": "SETUP",
|
||||
"version": 4,
|
||||
"slug": "reproduce-a6-latency-injection",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "f2183920-6573-4148-90ae-8a510500d862",
|
||||
"relations": 0
|
||||
},
|
||||
"7dc48b91-e31b-455c-9a9d-c766f95ff491": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-d1-backup-restore",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "cf1fe22a-af52-4d57-9833-559f537d924b",
|
||||
"relations": 0
|
||||
},
|
||||
"e53c5947-e1df-400a-ad79-e9d55b1da452": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-d2-version-upgrade",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "cf1fe22a-af52-4d57-9833-559f537d924b",
|
||||
"relations": 0
|
||||
},
|
||||
"186443e8-a32a-4a94-8609-845a4247d120": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-d3-secret-exposure",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "cf1fe22a-af52-4d57-9833-559f537d924b",
|
||||
"relations": 0
|
||||
},
|
||||
"9349a3fe-5234-48ae-af9f-029ffc0d2296": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-d4-certificate-renewal",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "cf1fe22a-af52-4d57-9833-559f537d924b",
|
||||
"relations": 0
|
||||
},
|
||||
"4f32b469-185a-4dea-8eba-599864a3b476": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-d4a-deploy-hook",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "cf1fe22a-af52-4d57-9833-559f537d924b",
|
||||
"relations": 0
|
||||
},
|
||||
"4f56ed58-fc82-4ed1-ac87-c356b30c34f7": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-a0-session-sharing-path",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "2ee927ff-217b-429f-b081-d313df65a5de",
|
||||
"relations": 0
|
||||
},
|
||||
"95e29500-b535-4246-86db-d569ed814904": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-a1-jgroups-transport-block",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "2ee927ff-217b-429f-b081-d313df65a5de",
|
||||
"relations": 0
|
||||
},
|
||||
"b8d7db33-afdc-4e49-9eab-ed4edbbe398e": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-a7-volatile-comparison",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "2ee927ff-217b-429f-b081-d313df65a5de",
|
||||
"relations": 0
|
||||
},
|
||||
"21dce25a-a165-47dc-bb40-2ed9f6f9efea": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-a7a-volatile-cause",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "2ee927ff-217b-429f-b081-d313df65a5de",
|
||||
"relations": 0
|
||||
},
|
||||
"0b64d23a-f82a-44b4-ad54-e079578977c4": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-a8-rolling-restart",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "2ee927ff-217b-429f-b081-d313df65a5de",
|
||||
"relations": 0
|
||||
},
|
||||
"9bb0b051-c158-497f-a744-b24769c93783": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-b4-forged-identity-headers",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "116708bb-fcb8-4c7e-9814-a8661dfb1c52",
|
||||
"relations": 0
|
||||
},
|
||||
"d53181b9-bb28-4703-97ed-98adfb5b18dc": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "reproduce-b7-cookie-secret-rotation",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "116708bb-fcb8-4c7e-9814-a8661dfb1c52",
|
||||
"relations": 0
|
||||
},
|
||||
"8d6b8a7f-e08e-4c9f-9772-a14a9d569260": {
|
||||
"kind": "SETUP",
|
||||
"version": 4,
|
||||
"slug": "reproduce-b7a-orphan-session",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "116708bb-fcb8-4c7e-9814-a8661dfb1c52",
|
||||
"relations": 0
|
||||
},
|
||||
"3421185f-5f3c-4263-9455-6243306e9fc9": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-c1-multi-app-sso",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "116708bb-fcb8-4c7e-9814-a8661dfb1c52",
|
||||
"relations": 0
|
||||
},
|
||||
"5296a106-4c42-437d-b721-33a5e53a045c": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-c2-backchannel-logout",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "116708bb-fcb8-4c7e-9814-a8661dfb1c52",
|
||||
"relations": 0
|
||||
},
|
||||
"4ef91d43-1f1d-481a-8b6f-5e015d068578": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-b0-default-session-store",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "3e8e8f8d-1f94-48ba-a821-b7403b35eba5",
|
||||
"relations": 0
|
||||
},
|
||||
"1e5d05fa-88f4-4ef5-a402-4a520ae4a52d": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-b1-redis-session-store",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "3e8e8f8d-1f94-48ba-a821-b7403b35eba5",
|
||||
"relations": 0
|
||||
},
|
||||
"df2ee798-7f31-4570-a355-11f96c0eea84": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-b2-jdbc-token-store",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "3e8e8f8d-1f94-48ba-a821-b7403b35eba5",
|
||||
"relations": 0
|
||||
},
|
||||
"405c4206-9b59-491f-aed1-8b97cfd9f584": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-b3-refresh-contention",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "3e8e8f8d-1f94-48ba-a821-b7403b35eba5",
|
||||
"relations": 0
|
||||
},
|
||||
"af9645a0-8ca8-481d-9624-69fce6449b7c": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-b5-redis-loss",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "3e8e8f8d-1f94-48ba-a821-b7403b35eba5",
|
||||
"relations": 0
|
||||
},
|
||||
"7447ccbf-1800-43a4-a9d2-8ac774965c4b": {
|
||||
"kind": "SETUP",
|
||||
"version": 2,
|
||||
"slug": "reproduce-b6-key-rotation",
|
||||
"publication": null,
|
||||
"projectId": "9a8ed8be-ecb1-4e40-8e11-4b5641e98ded",
|
||||
"topicId": "3e8e8f8d-1f94-48ba-a821-b7403b35eba5",
|
||||
"relations": 0
|
||||
},
|
||||
"d103bb81-45df-402f-86e5-e41d66ed7f8d": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "exit-distribution-for-keycloak-workload",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"688c6c02-c1bd-4cd2-a615-2396db145386": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "host-numa-topology",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"4a2d3332-81c3-44fa-a4fb-216a41abb504": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "idle-vcpu-thread-appearance",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"2acec7d5-3eaf-4115-9d61-45647c4ec01e": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "is-production-on-a-hypervisor",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"62319064-17ef-4b2f-bf8b-e363cd0e36a6": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "pinning-before-and-after",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"2d058fb5-01f1-4be8-80bb-0e377868573c": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "steal-time-increase-under-two-cpu-bound-vms",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"116b806c-b176-401c-9363-1489fffb721c": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "throttling-vs-contention",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"723d8930-9e82-4552-8376-038a6446ec71": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "throughput-vs-vcpu-count",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"cd58d35d-3a93-4682-82b8-b64ce3a8813c": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "vcpu-thread-migration-without-pinning",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"da3a7b56-5691-4a9f-90c5-3a1a5d0f0013": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "virtualization-layer-saturation-during-refresh",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"61b7486f-5dab-41df-8f4f-e8fc21d88617": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "vm-exit-distribution-by-workload",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "e42456e2-9efd-41ee-b676-df82e90f2f53",
|
||||
"relations": 0
|
||||
},
|
||||
"f972ca27-7e18-41c1-9494-59cc6f676ae2": {
|
||||
"kind": "SETUP",
|
||||
"version": 3,
|
||||
"slug": "create-three-guests-with-cloud-init",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"74a7bacf-e5d8-4129-926a-c8cf5cacb8c9": {
|
||||
"kind": "SETUP",
|
||||
"version": 5,
|
||||
"slug": "edge-nginx-and-host-dnat",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"5e629c2f-e653-4dd9-b1c9-1fe6b2bb181d": {
|
||||
"kind": "SETUP",
|
||||
"version": 6,
|
||||
"slug": "install-k3s-server-and-agent",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"7b113a04-180a-40ec-9270-033531c22221": {
|
||||
"kind": "SETUP",
|
||||
"version": 5,
|
||||
"slug": "keycloak-two-nodes-and-postgres-on-k3s",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"7c66a553-0008-4294-a27a-687bd1bda0c1": {
|
||||
"kind": "SETUP",
|
||||
"version": 5,
|
||||
"slug": "prepare-the-lab-host-for-virtualization",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"0cb0f195-b06b-4f8e-b52e-675eb0918805": {
|
||||
"kind": "SETUP",
|
||||
"version": 5,
|
||||
"slug": "prometheus-and-grafana-for-the-lab",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"975a6d61-4e34-4034-a0d2-01fea3b498a3": {
|
||||
"kind": "SETUP",
|
||||
"version": 5,
|
||||
"slug": "wildcard-certificate-with-dns-01-and-a-deploy-hook",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "886181b9-5d25-47bf-81a4-813084e3d9d7",
|
||||
"relations": 0
|
||||
},
|
||||
"efce9a6e-5f5d-45ec-86e5-056d8cb1b8d2": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 3,
|
||||
"slug": "huge-pages-in-a-vm",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 1
|
||||
},
|
||||
"647d6d11-5bb2-4028-a530-b10c8925aa11": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 3,
|
||||
"slug": "memory-pressure-reclaim-swap-oom",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 3
|
||||
},
|
||||
"68811272-5352-4409-aa20-7e22e601ede8": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 2,
|
||||
"slug": "numa-locality-for-vcpu-and-memory",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 3
|
||||
},
|
||||
"e80853fa-98b8-4cc3-a2df-427c7147794b": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 2,
|
||||
"slug": "page-fault-layers-in-a-vm",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 1
|
||||
},
|
||||
"ebdf93d7-2dcb-4fc8-91b9-2364ac8196e6": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 3,
|
||||
"slug": "virtio-balloon-memory-reclaim",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 1
|
||||
},
|
||||
"6a60abe7-ea2c-46c2-bb9f-8281bfbe9644": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "balloon-target-vs-guest-available-memory",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"074a1cb4-cea8-4dad-bc4c-899692ff9aa9": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "guest-page-fault-vs-workload",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"a2cbc828-59ab-4e70-916a-d053e71960ae": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "host-major-fault-vs-storage-latency",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 5
|
||||
},
|
||||
"a05fe2a6-eb7c-4bcc-a7da-58e729436468": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "host-memory-pressure-vs-guest-latency",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 5
|
||||
},
|
||||
"50730203-df5f-4604-8535-7e93ab6fb724": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "host-thp-policy",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 3
|
||||
},
|
||||
"380d4975-3be5-451d-aede-2e24c5a2a09e": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "numa-remote-access-vs-workload-latency",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"1b59e6de-16f1-42b2-81bb-01d6198e34bf": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "qemu-memory-numa-placement",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"fa5b3782-9fcf-4113-8f51-a55c8023b2db": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "qemu-resident-memory-distribution",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"d3e8501f-e1b5-4f8f-aa9a-89f9c89a308e": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "swap-activity-in-guest-and-host",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 3
|
||||
},
|
||||
"63aef96b-03ef-4dbd-9ba6-9e61c6e695e1": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "virtio-balloon-configured",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 3
|
||||
},
|
||||
"67285d51-7eaf-4540-9577-cfd0b273b40e": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "vm-configured-vs-current-memory",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"f460e9a2-35ef-46ff-81cf-b36627a1b231": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "vm-ram-backed-by-hugetlb",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"63fa33e5-9957-4d28-8d3c-c75735a73bd6": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 3,
|
||||
"slug": "memory-symptom-needs-layer-separation",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 6
|
||||
},
|
||||
"ded41b52-ec08-4231-a54c-86d6c80d38f0": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 3,
|
||||
"slug": "record-the-conditions-with-every-memory-experiment",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "5675627f-3616-409c-990b-c537d3c68ed6",
|
||||
"relations": 4
|
||||
},
|
||||
"5b1de31c-0495-4226-8607-73ed7284b314": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 160,
|
||||
"slug": "guest-packet-path-to-physical-nic",
|
||||
"publication": "PUBLISHED",
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 10
|
||||
},
|
||||
"600a2621-f6d8-42df-9629-7db65011545d": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "actual-packet-path-nginx-to-keycloak",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 5
|
||||
},
|
||||
"484fd832-c7d3-413e-897a-97892e4e10ac": {
|
||||
"kind": "QUESTION",
|
||||
"version": 4,
|
||||
"slug": "is-vhost-net-actually-in-use",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 4
|
||||
},
|
||||
"79ac61d6-cbe6-483b-9961-02ca8c02b5c2": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "network-virtualization-cpu-cost-under-load",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 5
|
||||
},
|
||||
"bded6560-dc8d-473d-966c-5b037bb84c4c": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "qemu-backend-vs-vhost-net-on-this-host",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 4
|
||||
},
|
||||
"397c4789-0272-449b-86d6-2c4a3a122401": {
|
||||
"kind": "QUESTION",
|
||||
"version": 4,
|
||||
"slug": "tap-interface-to-vm-mapping",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 4
|
||||
},
|
||||
"1a996f8d-b04e-49d2-88ef-4877e21f7c0e": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "virtio-net-multi-queue-enabled",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 3
|
||||
},
|
||||
"38716d7f-1aa1-48d8-ab4c-3fc505332128": {
|
||||
"kind": "QUESTION",
|
||||
"version": 4,
|
||||
"slug": "vm-network-mode-bridge-nat-or-routed",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 4
|
||||
},
|
||||
"68a848c7-eaff-4421-ad25-de21673ca40c": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 4,
|
||||
"slug": "bisect-the-packet-path-with-capture-points",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 5
|
||||
},
|
||||
"ca36f0db-9028-4761-91a8-afb7eb30f2b9": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 4,
|
||||
"slug": "verify-the-network-path-before-blaming-the-application",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "56089eec-a603-4eac-bbb6-6fb44392ea63",
|
||||
"relations": 5
|
||||
},
|
||||
"3b05c1f0-13e9-414a-97a6-2078fb4bab26": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 84,
|
||||
"slug": "guest-block-io-path-to-virtqueue",
|
||||
"publication": "PUBLISHED",
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 7
|
||||
},
|
||||
"ecaaa37d-7b33-4cbf-9bc5-4c6caad14ee5": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 4,
|
||||
"slug": "host-block-stack-under-the-vm",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 7
|
||||
},
|
||||
"892b6087-8961-486c-b4d9-d3dd46bc2605": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 4,
|
||||
"slug": "qemu-block-backend-forms",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 7
|
||||
},
|
||||
"8fafaeea-8746-4537-87a4-679a3a91aa4c": {
|
||||
"kind": "CONCEPT",
|
||||
"version": 5,
|
||||
"slug": "write-completion-is-not-durability",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 6
|
||||
},
|
||||
"ae69e2e1-1a3b-4ae3-ae2a-572af07b95d7": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "disk-image-format-and-actual-host-usage",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 4
|
||||
},
|
||||
"be3c2c58-1ed4-4eae-876a-3114faa61c94": {
|
||||
"kind": "QUESTION",
|
||||
"version": 2,
|
||||
"slug": "guest-fsync-latency-vs-host-storage-latency",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 7
|
||||
},
|
||||
"eead2379-94fe-463a-9e5e-06a01bf2105d": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "host-block-device-under-the-disk-image",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 6
|
||||
},
|
||||
"77aa0188-5c2b-4f47-bda7-7c66b084968d": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "host-io-scheduler",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 4
|
||||
},
|
||||
"480f86ac-86fb-4290-9bf5-584763aa1363": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "qemu-disk-cache-mode",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 4
|
||||
},
|
||||
"1f76d54b-bb17-4174-8128-0c2d71d4256f": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "vm-disk-backend-mapping",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 5
|
||||
},
|
||||
"ed64d4ff-aa01-48cc-ae68-6a683b025cde": {
|
||||
"kind": "QUESTION",
|
||||
"version": 3,
|
||||
"slug": "vm1-storage-load-vs-vm2-latency",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 6
|
||||
},
|
||||
"decbab8d-9c98-45c6-b5b8-e6162e407299": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 4,
|
||||
"slug": "a-speedup-that-removed-durability-is-not-an-optimization",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 5
|
||||
},
|
||||
"274c5636-33f6-4c19-a54b-d2a96af31289": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 3,
|
||||
"slug": "confirm-the-disk-backend-on-the-host",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 6
|
||||
},
|
||||
"b1cda8c4-d31d-4ae4-a4d9-4103a0ab3109": {
|
||||
"kind": "REFERENCE",
|
||||
"version": 4,
|
||||
"slug": "read-storage-before-blaming-cpu-for-latency",
|
||||
"publication": null,
|
||||
"projectId": "8a638411-2b21-4202-8bf0-720180d77897",
|
||||
"topicId": "23314be2-7350-44f5-8989-575c3b40898f",
|
||||
"relations": 6
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user