Bộ nhớ chia sẻ
Chuyển 1 GB giữa hai tiến trình: pipe 3,1 GB/s, bộ nhớ chia sẻ có ring 9,8 GB/s (~3×). Nhưng shm một đệm lại chậm hơn pipe, và một số 15 GB/s dối đã suýt lừa tôi. Đo thật.
Chuyển 1 GB giữa hai tiến trình: pipe 3,1 GB/s, bộ nhớ chia sẻ có ring 9,8 GB/s (~3×). Nhưng shm một đệm lại chậm hơn pipe, và một số 15 GB/s dối đã suýt lừa tôi. Đo thật.
Pipe báo dung lượng 64 KB, nhưng ghi khối 4097 byte chỉ nhét được 44 KB trước khi chặn — cách ghi định hình con số. Và khi đầy, write() chặn đúng tới khi bên đọc rút. Đo thật.
Khóa mutex khi không ai tranh chỉ tốn 5,4 ns (thuần userspace, không syscall). Tranh chấp 8 luồng chậm ~4 lần — nhưng strace cho thấy gần như không có syscall futex nào. Đo thật.
Mỗi lượt một task chạy ~3 ms rồi bị đẩy ra — và con số đó cố định dù 2 hay 8 task tranh CPU. Nhưng chỉ khi ghim cùng một CPU mới thấy; và kernel này là EEVDF, không phải CFS. Đo thật.
Hai tiến trình tranh một CPU chia phần theo nice: 0 vs 5 ra 75/25, 0 vs 19 ra 98,5/1,5. Nhưng phần chia chỉ phụ thuộc HIỆU nice — nice 10 vs 15 chia y hệt 0 vs 5. Đo thật.
Ghim tiến trình vào một nhân để giữ cache ấm — nghe hợp lý, nhưng đo ra ghim không nhanh hơn tự do: máy rảnh, dưới tải, kể cả khi ép dời liên tục. Vì scheduler đã tự giữ. Đo thật.