sendfile
sendfile gửi cả file 512 MB trong ĐÚNG 1 syscall thay vì 16.384 read+write. Nhưng trên loopback cache ấm, thông lượng thô của nó không hơn read+write đệm 64K — vì tôi đo nhầm đại lượng. Đo thật.
sendfile gửi cả file 512 MB trong ĐÚNG 1 syscall thay vì 16.384 read+write. Nhưng trên loopback cache ấm, thông lượng thô của nó không hơn read+write đệm 64K — vì tôi đo nhầm đại lượng. Đo thật.
Cấp phát trên stack tốn ~1 ns cho mọi kích cỡ (chỉ dời con trỏ), malloc chậm 6-14 lần. Nhưng stack giới hạn 8MB và tràn thì crash không báo, còn heap trả NULL. Đo thật.
Ép malloc về một arena chỉ làm 8 luồng chậm nhẹ (556 xuống 434 triệu op/s) — tưởng arena không quan trọng. Nhưng tắt luôn tcache thì nó sập còn 23. Hai lớp chống tranh khóa. Đo thật.
Hai luồng ghi hai biến RIÊNG, không hề chia sẻ gì trong code — nhưng để chung một cache line thì chậm ~3,7 lần. Tranh chấp vô hình ở tầng mã nguồn. Đo thật.
Đọc /proc/self/stat tốn ~1,5 us — tưởng mọi file /proc đều rẻ vậy. Nhưng smaps tốn 12 us và còn phình theo bộ nhớ tiến trình, vì nhân phải đi bộ bảng trang. Đo thật.
Load average trên Linux đếm cả tiến trình kẹt chờ I/O — nên 4 tiến trình chờ đĩa đẩy load lên 4 dù CPU rảnh. Và nó dâng chậm vì làm mượt. Load cao ≠ CPU quá tải. Đo thật.