Lý do cốt lõi đằng sau đó là thông thường: I / O là nhiều chậm hơn so với CPU / RAM. Ngay cả khi các quy trình thực hiện thao tác I / O sử dụng DMA (làm giảm tải CPU), tại một số điểm, chúng có thể cần phải chờ hoàn thành các yêu cầu của chúng.
Trong trường hợp thông thường nhất của ổ cứng, chỉ cần thêm vào một số ứng dụng đang cố truy cập các tệp nằm rải rác xung quanh ổ đĩa và bạn có thể tự pha cà phê (trà, bất cứ thứ gì). Với SSD, tình hình trở nên tốt hơn, nhưng ngay cả SSD - có thông lượng được đo bằng hàng trăm MB / giây trên SATA (so với hàng chục MB / s của ổ cứng dạng đĩa quay) và thời gian tìm kiếm không đáng kể (so với milis giây cho một tấm quay) - có thể trở thành một nút cổ chai.
Vấn đề theo tôi hiểu không chỉ ở việc truyền dữ liệu mà còn ở chi phí cần thiết - I / O được điều khiển bởi kernel, nhưng chỉ hiếm khi xảy ra mà không có không gian người dùng. Do đó, có thể có rất nhiều chuyển đổi ngữ cảnh, chỉ từ các ứng dụng đang chờ trên I / O kiểm tra xem có điều gì đang xảy ra hay không (tất nhiên phụ thuộc vào việc thực hiện). Trong trường hợp chuyển đĩa, có thể có một số luồng nhân cạnh tranh tài nguyên hoặc chờ bận (đôi khi là chiến lược phù hợp). Hãy nhớ, ví dụ sao chép dữ liệu từ phân vùng này sang phân vùng khác yêu cầu hệ thống tệp hiện đại để: tìm ra dữ liệu nguồn ở đâu, đọc nó, phân bổ không gian trên hệ thống tệp đích, ghi dữ liệu meta, ghi dữ liệu, lặp lại cho đến khi hoàn tất.
Và nếu tại một thời điểm nào đó, hệ thống của bạn bắt đầu hoán đổi (thường có mức ưu tiên cao hơn I / O thông thường), thảm họa sẽ được hoàn tất.
EDIT : Sau khi nói chuyện với một số nhà phát triển nhân Linux, tình hình trở nên rõ ràng hơn một chút. Vấn đề chính là bộ lập lịch I / O, không có nhiều ý tưởng về việc ưu tiên I / O nào. Do đó, bất kỳ đầu vào người dùng và đầu ra đồ họa nào sau đây đều chia sẻ hàng đợi với hoạt động của đĩa / mạng. Do đó, điều đó cũng có thể xảy ra là nó có thể loại bỏ dữ liệu quá trình được lưu trong bộ nhớ cache của trang (ví dụ như các thư viện được tải) khi kết luận rằng nó có thể sử dụng bộ đệm trang hiệu quả hơn trên các I / O khác. Điều đó tất nhiên có nghĩa là một khi mã đó cần được chạy lại, nó sẽ phải được tìm nạp lại - tạo thành đĩa có thể đang tải nặng.
Điều đó nói rằng, theo như nhân Linux, nhiều vấn đề trong số này đã được khắc phục gần đây (vấn đề đã được biết), vì vậy, nói 4.4.x hoặc 4.5.x nên hoạt động tốt hơn và nó đã được báo cáo (nói chung nhân kernel rất vui khi ai đó muốn giúp đỡ bằng cách báo cáo và kiểm tra lỗi).