Commit Graph
676 Commits
Author SHA1 Message Date
SergioandClaude Opus 5 bfa3c6445a tasas: SDD 25 al día — §4 confirmado sobre artefactos, §9 con cuatro medidos
- §0 y §4.bis: el «sin MEMCG» deja de ser deducción del defconfig. Los ONCE
  .config sellados traen `# CONFIG_MEMCG is not set` y `# CONFIG_PSI is not
  set`, y ninguno tiene CFS_BANDWIDTH (⇒ tampoco existe `cpu.max`; hoy nadie
  lo pide). Y se nombra por qué sobrevivió: el kernel de la máquina de
  desarrollo SÍ los trae — el fallo sólo existe del lado del artefacto.
- §4.ter: el guardián `hammer kernel contract`, con las tres decisiones de
  diseño (por perfil, contra el .config y no la receta, apagado ≠ ausente).
- §3: de tres sorpresas a cinco (taskstats no es más rápido que /proc; el
  sondeo es ciego, no lento).
- §9: reescrita. Cuatro de los seis experimentos nombrados quedaron medidos
  con root; siguen abiertos el iterador BPF (detrás de H7) y el Intel con PTI.
- §5, §7 y §10: filas medidas, H1 marcado como pendiente-pero-vigilado,
  H8 (el contrato es parte del release) y H9 (reflink alimenta SDD 18).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-29 19:34:16 +00:00
Sergio 7cb1a5de95 estado: cosecha granja 2026-08-29T19:31:56Z — avance del árbol KDE 2026-08-29 19:31:56 +00:00
SergioandClaude Opus 5 849c041446 tasas: los 4 experimentos que §9 dejó nombrados, medidos con root
SDD 25 §9 listó seis experimentos que no se pudieron correr y por qué. Cuatro
de ellos sólo pedían privilegios, y esta sesión los tuvo. Programas y salidas
crudas en docs/evidencia/tasas-kernel-2026-08-29/.

1. proc connector (bench_connector.c) — el sondeo de /proc no es lento, es
   CIEGO: 200 procesos de vida mínima lanzados uno cada 10 ms, sondeando cada
   100 ms se ven **0 de 200**; por connector, **200 de 200**. Y esperar el
   evento no cuesta nada frente a waitpid (116,0 vs 114,8 µs, dentro del ruido),
   con 0 eventos perdidos en 1400.
   Sorpresa: taskstats por genetlink **no es más rápido** que parsear
   /proc/self/stat (2 688 vs 2 697 ns). Su valor es el CONTENIDO (delay
   accounting), no la velocidad.

2. reflink (bench_reflink.c) — el «copiar en O(1)» existe y NO está en ext4:
   FICLONE no soportado, y copy_file_range ≈ read+write (13,7 vs 14,5 ms).
   En xfs y btrfs es PLANO: 64 MiB en 0,010 ms y 512 MiB —ocho veces más— en
   0,020 ms, contra 512,7 ms de read+write. **25 600× a 512 MiB.**

3. io_uring SQPOLL (bench_sqpoll.c) — no rescata el veredicto de T12: sobre
   datos cacheados pierde igual. ext4: pread 554 ns < io_uring 618 < SQPOLL 868.
   tmpfs: pread 749 < SQPOLL 1 409 < io_uring 2 030 (ahí sí mejora al io_uring
   normal, 1,4×, pero sigue perdiendo contra la syscall). Y se come un core.

4. syscalls por invocación de compilador — con el strace DEL PROPIO CORPUS
   (store/3c1fd8c0…-strace), que es la respuesta a «no hay strace en esta
   máquina». gcc: 1 803 syscalls por un `-c` trivial, **1 095 con error (61%),
   919 de ellas readlink** — la canonicalización de rutas, que T8 no medía.
   Pero al piso de 78,7 ns son 0,14 ms sobre 30,5 ms de compilado: **el cruce
   al kernel es el 0,5%**. La tormenta de rutas vale milisegundos, no minutos.

Condiciones distintas a la corrida original (load ~1,3 sobre 4 vCPU contra 7,3)
⇒ los absolutos NO se comparan entre corridas, sólo los cocientes dentro de una.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-29 19:31:48 +00:00
SergioandClaude Opus 5 7433bcba83 kernel: un contrato de capacidades que hace RUIDOSA la falta de MEMCG
SDD 25 §4 dejó el hallazgo escrito y sin guardián: los kernels de hammer se
construyen sin CONFIG_MEMCG, `memory.max` no existe, y arje descarta el error
al escribirlo ⇒ una Card pide un tope de memoria, corre SIN tope, y la única
huella es un `warn!`. Nadie lo veía porque la máquina de desarrollo SÍ trae
MEMCG: el fallo sólo existe del lado del artefacto sellado.

`hammer kernel contract` declara qué pedazos de interfaz de kernel usa el
userland POR NOMBRE (con consumidor, fichero y CÓMO FALLA HOY si no está) y los
comprueba contra un `.config` YA PRODUCIDO — no contra la receta: entre el
`scripts/config -e X` y el `.config` hay un `olddefconfig` que puede tragarse el
símbolo en silencio.

Por perfil, no global — misma lección que el gate de hardware: `linux.toml` es
el kernel de QEMU del selfhost-verify, no hospeda Cards, y su hash es
load-bearing del baseline `of_tree`. Exigirle contabilidad de memoria sería
rechazar una receta sana.

Medido sobre el store: **2 de 11 configs sellados cumplen su perfil**; los 9
`anfitrion-cards` fallan por MEMCG (apagado A MANO: `# CONFIG_MEMCG is not
set`) y les falta PSI. El kernel vivo de esta máquina pasa las 11 exigidas —
que es exactamente por qué el bug sobrevivió.

Distingue apagado explícito de ausente (un símbolo que el .config ni nombra
puede ser un renombrado entre versiones), y un kernel sin perfil declarado
queda SIN COMPROBAR en vez de contar como aprobado.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-29 19:12:11 +00:00
Sergio eec5d8db79 estado: cosecha granja 2026-08-29T19:01:48Z — avance del árbol KDE 2026-08-29 19:01:48 +00:00
Sergio 5b8193cd35 estado: cosecha granja 2026-08-29T18:31:46Z — avance del árbol KDE 2026-08-29 18:31:46 +00:00
Sergio 96531327c9 estado: cosecha granja 2026-08-29T18:01:44Z — avance del árbol KDE 2026-08-29 18:01:44 +00:00
Sergio cc73dbcf58 estado: perfiles base/cli/escritorio-mirada COMPLETOS (52/52, 75/75, 33/33) 2026-08-29 17:41:40 +00:00
Sergio 9cebf82038 estado: cosecha granja 2026-08-29T17:02:02Z — avance del árbol KDE 2026-08-29 17:02:02 +00:00
Sergio 1313ee419b estado: cosecha granja 2026-08-29T16:31:48Z — avance del árbol KDE 2026-08-29 16:31:49 +00:00
Sergio 11ef892ab1 estado: cosecha granja 2026-08-29T16:01:53Z — avance del árbol KDE 2026-08-29 16:01:53 +00:00
Sergio b066980c08 estado: cosecha granja 2026-08-29T15:32:11Z — avance del árbol KDE 2026-08-29 15:32:11 +00:00
Sergio 5cf7162b77 estado: cosecha granja 2026-08-29T15:01:52Z — avance del árbol KDE 2026-08-29 15:01:52 +00:00
Sergio c5e69bd48e estado: cosecha granja 2026-08-29T14:31:49Z — avance del árbol KDE 2026-08-29 14:31:49 +00:00
Sergio 87ac21dc1e estado: cosecha granja 2026-08-29T14:02:07Z — avance del árbol KDE 2026-08-29 14:02:07 +00:00
SergioandClaude Opus 5 aeeaa6d07f SDD 25: las tasas del kernel medidas, y el MEMCG que falta en las recetas
16 tasas de Linux medidas en momento (KVM, 4 vCPU, bajo carga): piso de
syscall, /proc como API de texto, fork vs espacio de direcciones del padre,
enlazado dinámico, VFS, io_uring, THP, namespaces. Programas en C y salidas
crudas en docs/evidencia/tasas-kernel-2026-08-29/.

Lo que sale de medir y después verificar contra las recetas: los kernels de
hammer se construyen sin CONFIG_MEMCG (no está en x86_64_defconfig y no tiene
default y), y arje/sandokan escriben memory.max descartando el error. Un tope
de memoria pedido por una Card no se aplica y sólo deja un warn.

Tres resultados que contradicen el consejo de manual y quedan documentados:
THP 3x más lento que 4K con defrag=madvise, io_uring 2,8x más lento que pread
sobre tmpfs, y stat cuesta lo mismo en tmpfs que en ext4 (es tasa del VFS).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ACUcwo9mZsE5ocYVE9npih
2026-08-29 13:35:55 +00:00
Sergio 2176f26c05 estado: cosecha granja 2026-08-29T13:32:27Z — avance del árbol KDE 2026-08-29 13:32:27 +00:00
Sergio 82c92f5dec estado: cosecha granja 2026-08-29T13:02:02Z — avance del árbol KDE 2026-08-29 13:02:02 +00:00
Sergio 7b5197529f estado: cosecha granja 2026-08-29T12:31:58Z — avance del árbol KDE 2026-08-29 12:31:58 +00:00
Sergio 5a9acbdd51 estado: cosecha granja 2026-08-29T12:02:01Z — avance del árbol KDE 2026-08-29 12:02:01 +00:00
Sergio dc199fc949 estado: cosecha granja 2026-08-29T11:32:05Z — avance del árbol KDE 2026-08-29 11:32:05 +00:00
Sergio 1fcb96cfe2 estado: cosecha granja 2026-08-29T11:02:06Z — avance del árbol KDE 2026-08-29 11:02:06 +00:00
Sergio f0d8cdfe16 estado: cosecha granja 2026-08-29T10:32:03Z — avance del árbol KDE 2026-08-29 10:32:03 +00:00
Sergio f1354193f8 estado: cosecha granja 2026-08-29T10:02:03Z — avance del árbol KDE 2026-08-29 10:02:03 +00:00
Sergio 0889a009fb estado: cosecha granja 2026-08-29T09:31:55Z — avance del árbol KDE 2026-08-29 09:31:55 +00:00
Sergio cb66e22186 estado: cosecha granja 2026-08-29T09:01:58Z — avance del árbol KDE 2026-08-29 09:01:58 +00:00
Sergio 0fe38ba9f9 estado: cosecha granja 2026-08-29T08:31:47Z — avance del árbol KDE 2026-08-29 08:31:47 +00:00
Sergio d47b9cb3f0 estado: cosecha granja 2026-08-29T08:01:57Z — avance del árbol KDE 2026-08-29 08:01:57 +00:00
Sergio 06f938f4cc estado: cosecha granja 2026-08-29T07:31:45Z — avance del árbol KDE 2026-08-29 07:31:45 +00:00
Sergio 1dbdf7d29b estado: cosecha granja 2026-08-29T07:02:11Z — avance del árbol KDE 2026-08-29 07:02:11 +00:00
Sergio ebd02f17cb estado: cosecha granja 2026-08-29T06:32:09Z — avance del árbol KDE 2026-08-29 06:32:09 +00:00
Sergio 3b8fd7ed86 estado: cosecha granja 2026-08-29T06:02:08Z — avance del árbol KDE 2026-08-29 06:02:09 +00:00
Sergio 240f49e6bb estado: cosecha granja 2026-08-29T05:32:16Z — avance del árbol KDE 2026-08-29 05:32:16 +00:00
Sergio e084fcdb25 estado: cosecha granja 2026-08-29T05:02:27Z — avance del árbol KDE 2026-08-29 05:02:28 +00:00
Sergio c8a7d2ef49 estado: cosecha granja 2026-08-29T04:32:12Z — avance del árbol KDE 2026-08-29 04:32:12 +00:00
Sergio 5dcf94b490 estado: cosecha granja 2026-08-29T04:01:50Z — avance del árbol KDE 2026-08-29 04:01:50 +00:00
Sergio 442524f236 estado: cosecha granja 2026-08-29T03:32:15Z — avance del árbol KDE 2026-08-29 03:32:15 +00:00
Sergio 271c425e11 estado: cosecha granja 2026-08-29T03:02:18Z — avance del árbol KDE 2026-08-29 03:02:19 +00:00
Sergio 7fdc8ed97c estado: cosecha granja 2026-08-29T02:31:55Z — avance del árbol KDE 2026-08-29 02:31:55 +00:00
Sergio 0aeb191d63 estado: cosecha granja 2026-08-29T02:02:28Z — avance del árbol KDE 2026-08-29 02:02:28 +00:00
Sergio 5bbebf1298 estado: cosecha granja 2026-08-29T01:32:15Z — avance del árbol KDE 2026-08-29 01:32:15 +00:00
Sergio 5d3986be4c estado: cosecha granja 2026-08-29T01:01:39Z — avance del árbol KDE 2026-08-29 01:01:39 +00:00
Sergio 7dd2c164ac estado: cosecha granja 2026-08-29T00:31:55Z — avance del árbol KDE 2026-08-29 00:31:55 +00:00
Sergio 68946d7cfa estado: cosecha granja 2026-08-29T00:02:11Z — avance del árbol KDE 2026-08-29 00:02:11 +00:00
Sergio 1a1c4880cf estado: cosecha granja 2026-08-28T23:31:49Z — avance del árbol KDE 2026-08-28 23:31:49 +00:00
Sergio 4beb7ead16 estado: cosecha granja 2026-08-28T23:01:52Z — avance del árbol KDE 2026-08-28 23:01:52 +00:00
Sergio 0dcd83cfb2 estado: cosecha granja 2026-08-28T22:32:13Z — avance del árbol KDE 2026-08-28 22:32:13 +00:00
Sergio 72773170e3 estado: cosecha granja 2026-08-28T22:02:18Z — avance del árbol KDE 2026-08-28 22:02:19 +00:00
Sergio 86073080ba estado: cosecha granja 2026-08-28T21:31:47Z — avance del árbol KDE 2026-08-28 21:31:47 +00:00
Sergio 4b80342b74 estado: cosecha granja 2026-08-28T20:31:56Z — avance del árbol KDE 2026-08-28 20:31:56 +00:00