Tại sao các hệ thống trở nên chậm khi thực hiện ghi lớn vào đĩa?


8

Tôi muốn biết tại sao các hệ thống trở nên chậm khi ghi dữ liệu hàng loạt vào đĩa.

Tôi nghĩ rằng để hệ thống trở nên chậm, cần có một số vấn đề với CPU. Nhưng viết chỉ là I / O bị ràng buộc.

Do gián đoạn phần cứng xảy ra khi ghi dữ liệu? Nếu vậy, có thể là do các ngắt mà CPU luôn chuyển đổi ngữ cảnh.


1
Tôi nghĩ rằng hầu hết tất cả các ứng dụng sẽ đọc / ghi dữ liệu từ đĩa, phải không?
jilen

1
Có thể nó đang trao đổi với bộ nhớ và do đó chậm lại, khi đĩa đang được sử dụng nhiều. Một plugin tải hệ thống có thể cho bạn biết, liệu bạn có đang sử dụng trao đổi theo cách đồ họa hay không. Đối với dòng lệnh, sử dụng free.
người dùng không xác định

1
Nếu bạn đã cấu hình / chạy hệ thống, bạn có thể xem các báo cáo SAR về thời gian chậm và nó sẽ cho bạn thấy những gì đang xảy ra trong khoảng thời gian đó (chuyển đổi ngữ cảnh, Đĩa I / O, tải CPU, lưu lượng mạng, v.v.).
Bratchley

Ngoài ra, hãy xem $PATH(các) cài đặt của bạn nếu bạn sử dụng hoàn thành lệnh hoặc mắc nhiều lỗi chính tả. Nhìn qua nhiều thư mục, đặc biệt là những thư mục có nhiều mục nhập thư mục, có thể mất thời gian đáng chú ý khi tài nguyên khan hiếm.
MattBianco

Câu trả lời:


3

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).


Bạn có thể giải thích một chút, tại sao toàn bộ hệ thống tụt hậu khi IO quá bận rộn? Ví dụ: tôi không thấy bất kỳ kết nối nào giữa Windows Manager và IO - rõ ràng, WM không thực hiện bất kỳ IO nào, vậy tại sao nó lại bắt đầu bị lag (ít nhất là khi nó không bị tráo đổi) ?
Hi-Angel

WM thực sự có thể thực hiện rất nhiều I / O thông qua máy chủ X / bộ tổng hợp Wayland (không nhiều như sao chép bốn luồng dữ liệu giữa 2 ổ cứng, nhưng nó không phải là không đáng kể - có lẽ là một trong những lý do awesomedường như được làm việc tốt hơn một chút so với kwiný nghĩa này).
peterph

Nhưng loại IO nào nó làm được? Có phải chỉ đơn giản là vì đăng nhập vào xsession-errors/ Xorg.ₙ.log? Không phải việc ghi nhật ký chỉ được đệm, mà không làm gián đoạn công việc WM? Còn gì nữa không? CẬP NHẬT: Tôi mới xem xét /proc/AwesomePID/fd- tập tin duy nhất mà WM của tôi đã mở là xsession-errors. Mọi thứ khác không thực sự là một tập tin - ổ cắm, /dev/null, /proc/stat...
Hi-Thiên thần

1
Nhưng có thể bạn đã nói rằng WM thực sự có thể thực hiện rất nhiều I / O thông qua máy chủ X / nhà soạn nhạc Wayland . Nhưng bất cứ điều gì, tại sao bạn nghĩ rằng nó không có đủ CPU. Khi điều đó xảy ra, CPU thường khá miễn phí - tôi có thể thấy tải trong tiện ích CPU trên bảng điều khiển của mình và việc giải nén một kho lưu trữ không tốn nhiều công sức.
Hi-Angel

1
@ Hi-Angel kiểm tra cập nhật câu trả lời cho dù nó làm rõ mọi thứ một chút.
peterph 17/03/2016

2

Kinh nghiệm của tôi là hoạt động I / O một mình không làm chậm hệ thống. Hiệu ứng này xảy ra khi các nhiệm vụ khác cũng cần I / O. Tình huống sẽ trở nên thực sự xấu xa nếu hệ thống bị tráo đổi (bắt buộc) và sau đó bạn gây ra tải I / O nặng.

Bạn có thể ảnh hưởng đến tác động của I / O nhiệm vụ nặng nề bởi ionice. Nếu bạn đặt chúng ở idlemức ưu tiên thì độ trễ cho các tác vụ khác vẫn có thể tăng nhưng không vượt quá mức tối thiểu. Tác vụ I / O bị gián đoạn ngay lập tức nếu một tác vụ khác (không nhàn rỗi) có I / O để thực hiện. Nếu bạn đang sử dụng một lịch trình hỗ trợ các cài đặt này.

Xem phần Chọn Bộ lập lịch I / O của Linux


1
Kinh nghiệm của tôi thì ngược lại: tức là tôi có thể bắt đầu giải nén một kho lưu trữ lớn - gây ra tải IO - và tại thời điểm này để chuyển sang «máy tính để bàn» khác, tôi cảm thấy chậm chuyển đổi. Làm thế nào là trình quản lý cửa sổ thậm chí có liên quan đến IO ?? Và vâng, tôi có RAM miễn phí, vì vậy nó không bị tráo đổi (và ngay cả khi tôi không - WM sẽ không bị tráo đổi trong lượt cuối cùng?) . FWIW, tôi đang sử dụng một Awesome WM nhẹ, và trước đó với những thứ kwin thậm chí còn tồi tệ hơn.
Hi-Angel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.