sergio/takana
> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…
tasas: T19 — el sandbox apila una capa overlay por dep, y lo caro no es lo que parece
1# T19 · qué cobra overlayfs POR CAPA — SDD 25
2# Medido el 2026-09-01 en `momento` (KVM/EPYC-Rome, 4 vCPU, 7,7 GiB, Linux 7.1.4-artix1-1)
3# con bench_overlay.c. Máquina CARGADA (load ~3,6 sobre 4 vCPU, cosecha de la granja en vuelo)
4# => los absolutos son cotas superiores; la señal está en los COCIENTES de una misma corrida.
5# 7 rondas, minimo/mediana. El overlay se monta y desmonta en CADA ronda: las dentries del
6# overlay estan frias en cada medida y las de abajo, calientes. Los FALLOS usan nombres nuevos.
7# Capas sinteticas en /dev/sdc (ext4); capas reales = artefactos del store en /dev/sdb (bind).
8
9===============================================================================
101 · CAPAS SINTETICAS (256 ficheros por capa, todas en el mismo filesystem)
11===============================================================================
12# bench_overlay — SDD 25 T19
13# base=/mnt/vvv/.bench-overlay rondas=7 ficheros/capa=256
14
15## A · lookup FRÍO por primera vez, en ns/ruta (capas apiladas)
16 N hit capa 0 hit capa N-1 FALLO open capa N-1 hit caliente mount(us) umount
17 1 4067.8/4885.0 1065.2/1490.5 3199.9/3730.0 1727.5/2328.7 664.4/747.2 152.4 10637.3
18 2 4723.2/5255.7 4629.8/5658.9 4918.5/5954.3 2226.6/2397.7 693.6/877.9 198.5 11269.4
19 4 4082.9/4585.8 5147.0/6053.4 8630.6/9255.2 1804.7/2483.9 673.2/702.4 177.9 11851.6
20 8 4204.9/5321.2 6208.8/8277.5 15866.8/20021.8 2114.3/2531.4 679.1/801.9 195.1 11825.4
21 16 4969.9/5528.2 9330.1/10328.9 30205.1/38274.9 2302.5/2627.9 668.5/755.1 219.1 10975.4
22 24 4055.5/4377.4 10893.2/11599.4 44716.2/45480.2 2072.6/2206.4 673.5/719.3 244.8 9252.3
23 32 4353.0/5354.5 13938.4/14776.4 60869.2/67052.7 2315.6/2602.8 677.6/709.0 309.3 10052.3
24 48 4543.7/5042.9 17377.3/19947.8 93970.6/102367.7 2317.1/2464.8 676.9/747.5 291.1 9166.2
25 64 4716.9/5151.4 22938.9/24143.3 124448.1/128839.6 2393.9/2479.6 682.5/701.6 364.9 9735.5
26# (mínimo/mediana de 7 rondas)
27
28## B · las MISMAS N capas fundidas en UNA sola (hardlinks, como merge_deps_layer)
29 N hit FALLO open caliente fundirlas(ms)
30 1 4370.9/5488.2 3387.8/4069.1 1815.2/2282.8 710.7/743.7 4.7
31 2 3948.5/4865.0 3655.1/4402.2 1657.8/2237.5 692.0/752.5 11.0
32 4 4207.6/4578.2 3578.0/3797.2 1927.8/2244.3 687.2/726.3 21.7
33 8 4060.6/6188.4 3834.6/5120.7 2069.1/2766.4 690.0/717.4 55.8
34 16 3851.7/4656.6 3390.6/4320.5 2001.1/2535.5 674.3/777.1 97.5
35 24 4441.6/4756.3 4117.7/4676.9 2118.3/2265.7 681.0/795.1 128.5
36 32 3617.2/6131.1 3398.0/4581.0 1722.4/2897.3 672.9/908.5 199.6
37 48 4250.3/5046.1 3750.6/4600.1 1771.0/2519.3 702.3/851.0 282.4
38 64 3982.9/4449.0 3673.2/4122.2 1861.3/2117.6 687.3/702.0 376.4
39
40## C · piso: el mismo árbol SIN overlay (ext4 directo)
41stat ext4 hit 877.9/1226.2 FALLO 2587.5/3165.6 ns
42
43# el árbol queda en /mnt/vvv/.bench-overlay — borrar a mano
44
45===============================================================================
462 · CAPAS REALES DEL STORE (64 artefactos con usr/include, 100-3087 ficheros)
47===============================================================================
48# bench_overlay — SDD 25 T19 (modo D: capas reales)
49# base=/mnt/vvv/.bench-overlay rondas=7
50# MODO D — 64 capas REALES del store, la primera es la de arriba
51
52## D1 · apiladas: ns/ruta, lookup frío
53 N ficheros hit capa N-1 FALLO open capa N-1 mount(us)
54 1 256 4828.5/5468.6 1783.6/2276.5 2237.5/3140.5 172.8
55 2 256 5564.4/6697.8 2187.5/3126.2 2762.6/3724.4 173.7
56 4 256 5481.4/5786.9 3356.8/3574.1 2439.5/2928.4 176.4
57 8 256 4573.8/5585.9 4620.9/5342.9 2391.4/2935.1 215.6
58 16 256 7239.4/8065.6 7896.4/8407.2 2923.6/3609.0 236.9
59 24 256 5988.1/7217.6 9757.8/11375.6 3114.7/3255.1 252.8
60 32 256 13520.6/15253.3 13039.9/14217.9 2643.8/3650.2 325.7
61# AVISO: lowerdir de 4663 B, cerca del límite de página
62mount overlay reales (n=48): No such file or directory
63 48 193 — el lowerdir no cabe en una página (ver sandbox.rs)
64
65## D2 · las mismas, FUNDIDAS en una capa de hardlinks
66 N ficheros hit FALLO open fundir(ms) ficheros
67 1 256 4626.9/5653.3 2294.5/2588.2 2063.5/2652.2 26.4 3087
68 2 256 4206.8/5242.6 2247.2/2720.0 2209.8/2738.8 63.9 5508
69 4 256 4959.6/5381.2 2223.1/2698.8 2515.5/3080.7 96.3 8674
70 8 256 4640.7/5223.2 2634.9/2753.6 2186.6/2880.0 152.3 11378
71 16 256 5341.5/6281.3 2540.1/2745.6 2584.2/3145.5 223.9 15354
72 24 256 4415.5/5190.4 2233.8/2494.2 2070.2/2606.1 264.4 16112
73 32 256 5923.7/7066.7 2480.6/3148.8 2481.5/3154.2 339.7 18228
74 48 193 7073.0/7829.2 3166.6/4154.0 2095.4/2707.1 387.2 21232
75 64 256 4407.3/4953.1 3549.5/3909.4 2135.3/2673.9 482.5 23803
76
77# el merge queda en /mnt/vvv/.bench-overlay/merged-real — borrar a mano
78
79===============================================================================
803 · LA API DE MONTAJE NUEVA (fsopen/fsconfig con 'lowerdir+' repetido)
81 Monta lo que mount(2) no puede: 64 capas reales, sin muro de pagina.
82===============================================================================
83# bench_overlay — SDD 25 T19 (modo E: fsconfig lowerdir+)
84# MODO E — fsopen/fsconfig con `lowerdir+`, 64 capas reales disponibles
85 N ficheros hit capa N-1 FALLO mount(us)
86 8 256 5475.8/5918.1 7089.7/9219.7 209.0
87 16 256 7341.7/8460.4 12109.4/15078.8 267.5
88 24 256 6996.2/10100.3 23070.0/29872.2 302.0
89 32 256 12512.3/15712.0 25547.0/29229.4 268.3
90 48 193 25388.3/33127.3 39832.3/46457.3 362.1
91 64 153 37535.7/43370.4 52041.6/54458.3 406.2
92
93===============================================================================
944 · DONDE ESTA EL MURO — bisecado con mount(2) DIRECTO, no con util-linux
95 (el mount(8) de util-linux se rinde mucho antes -entre 8 y 12 capas aca-, asi
96 que bisecar desde la shell da un muro FALSO; bwrap usa mount(2))
97===============================================================================
98n=8 lowerdir=776 B opciones=861 B -> OK
99n=32 lowerdir=3104 B opciones=3189 B -> OK
100n=40 lowerdir=3875 B opciones=3960 B -> OK
101n=41 lowerdir=3974 B opciones=4059 B -> OK
102n=42 lowerdir=4073 B opciones=4158 B -> FALLA: No such file or directory
103n=44 lowerdir=4266 B opciones=4351 B -> FALLA: No such file or directory
104n=48 lowerdir=4654 B opciones=4739 B -> FALLA: No such file or directory
105n=64 lowerdir=6223 B opciones=6308 B -> FALLA: No such file or directory
106
107===============================================================================
1085 · CUANTAS RUTAS DISTINTAS FALLA UN COMPILADO (strace del propio store)
109===============================================================================
110$ strace -f -e trace=file cc -O2 -c bench_connector.c (gcc 16 del host, 12 KB de fuente)
111llamadas de fichero trazadas : 2997
112llamadas que fallan ENOENT : 672
113RUTAS DISTINTAS que fallan : 381
114 de ellas bajo /usr /lib /opt: 352
115rutas distintas con acierto : 260