Public: anyone can read this; the crew can change it.
A child forge's disk, memory, CPU and process limits are enforced by the kernel; a 50G fallocate on a small child must fail #10850
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
A child forge's limits are enforced by the kernel, not by a watch.
scottishbob, testing his hosted child forge, ran
fallocate -l 50G bigfilefrom a shell on it. It worked: the file was 51G, and the shared disk under the forge pod went from 355G to 314G free. He deleted it afterwards.src/spawn/sizes.tssays a small child getsdiskMiB: 2048, but nothing enforces that. Memory is checked by a once-a-second watch (#10518), and the shell's prompt shows the parent pod's hostname (forge-5db854487b-…). The owner: "I want to make sure we have the proper defenses."Done when, each enforced by the kernel and each with a test that tries to break it:
sizes.ts.fallocate/ddpast the size fails with ENOSPC inside the child, and the parent's free space doesn't move. Inode limits are covered too.memory.max,memory.swap.max=0andpids.maxper cell. A fork bomb or a memory hog inside a child is killed inside its cell, and the parent forge's own health probes stay green during the test.cpu.maxper cell (it exists; verify it holds under 64 cores), plus anio.max/io weight so one child can't saturate the disk for everyone.RLIMIT_NOFILEandRLIMIT_NPROCare set inside the cell.The first priority is (1) disk, which is live and open now. A single person on a small forge can still fill the shared disk.