Ưu điểm / nhược điểm của việc gia tăng cam kết trên mạng trong fstab


14

Tôi đã làm nhiều việc tối ưu hệ thống che khuất trong quá khứ, nhưng tôi đã thoát khỏi của hầu hết trong số họ sau khi powertopnói với tôi rằng tôi nên đặt cổng USB của tôi để autosuspend , mà buộc họ phải một giấc ngủ vĩnh hằng, và cũng sau khi tôi nhận ra những lợi ích của một cao swappiness .

Nhưng hôm nay, trong khi nhìn vào /etc/fstab, tôi nhận thấy tôi đã đặt tùy chọn commit=60cho // home . Tôi nhớ rằng đây là một tối ưu hóa cho máy tính xách tay, để giảm lượng ghi vào đĩa, do đó tiết kiệm pin. Nhưng sau đó tôi trở nên lo lắng rằng điều này có thể gây mất dữ liệu (đôi khi pin của tôi bị ngắt kết nối, và sau đó khi khởi động fsckcho tôi biết về một vài nút in mồ côi).

Trong khi tìm kiếm một lời giải thích cho tùy chọn này, tôi đã đi đến những lời giải thích sau đây (cách thứ hai dường như mâu thuẫn với sự hiểu biết trước đây của tôi):

$ man mount | awk '/commit=/,/^$/'
commit=nrsec
    Sync all data and metadata every nrsec seconds. The default value is 5 seconds.
    Zero means default.

https://forums.gentoo.org/viewtopic-p-4088752.html

commit = 60 dừng mức ưu tiên "ngay lập tức" (mặc định là 5 giây) của việc ghi hơn đọc, lưu vào bộ ghi trong vài giây sau đó. Điều này tốt trong trường hợp đọc và ghi nặng trộn lẫn với nhau, trong đó người dùng muốn ưu tiên đọc, để bộ xử lý có thể được giữ bận thay vì tạm dừng trong khi chờ ghi xong trước khi có thể tiếp tục đọc.

Một ví dụ trong thế giới thực mà tôi đã thấy đang chờ vài giây để menu kéo xuống Gnome xuất hiện, dường như không có lý do. Lý do là vì đĩa đang bận ghi, vì vậy CPU phải đợi quá trình ghi hoàn tất trước khi có thể lấy tất cả dữ liệu từ đĩa để có thể hiển thị menu.

Không gì cam kết thực sự làm gì? Có thực sự có lợi thế của việc tăng nó (như đáp ứng và tiết kiệm năng lượng)? Nó thực sự có thể gây mất dữ liệu?

Câu trả lời:


12

Không gì cam kết thực sự làm gì?

Tôi nghĩ rằng một trong những lời giải thích tốt nhất đã được đưa ra ở đây bởi allquixotic .

Có thực sự có lợi thế của việc tăng nó (như đáp ứng và tiết kiệm năng lượng)? Nó thực sự có thể gây mất dữ liệu?

Theo tài liệu chính thức của ext4 :

Ext4 có thể được yêu cầu đồng bộ hóa tất cả dữ liệu và siêu dữ liệu của nó mỗi giây. Giá trị mặc định là 5 giây. Điều này có nghĩa là nếu bạn mất năng lượng, bạn sẽ mất nhiều nhất là 5 giây làm việc mới nhất (hệ thống tệp của bạn sẽ không bị hỏng mặc dù, nhờ vào nhật ký). Giá trị mặc định này (hoặc bất kỳ giá trị thấp nào) sẽ ảnh hưởng đến hiệu suất, nhưng nó tốt cho an toàn dữ liệu . Đặt nó thành 0 sẽ có tác dụng tương tự như để mặc định (5 giây). Đặt nó thành giá trị rất lớn sẽ cải thiện hiệu suất .

Tăng commitgiá trị có nghĩa là bạn có thể mất nhiều như N giây làm việc mới nhất (trong đó N = khoảng thời gian cam kết) mặc dù phần lớn thời gian này sẽ không xảy ra vì phần mềm vẫn có thể gọi fsync () và ghi dữ liệu của nó vào đĩa, ghi đè lên cam kết thiết lập. Bạn có thể xem nó như là "ghi mọi thứ vào đĩa ít nhất là điều này thường xuyên" . 1
Mặt khác, nó có nghĩa là ít viết (mà làm cho nó khá phổ biến đối với người dùng ssd) và hiệu suất tốt hơn (nhiều lần ghi được kết hợp thành một ghi lớn duy nhất, cập nhật để ghi trước trong khung thời gian cam kết được hủy bỏ ra).
Về tiết kiệm điện, theo trang này , hóa ra ngày nay commitgiá trị tăng không tiết kiệm điện.


1
Tôi nghĩ rằng một số tiết kiệm năng lượng xảy ra do phạm vi + phân bổ chậm có thể tối ưu hóa tốt hơn nhiều cho việc tìm kiếm ổ cứng. Nhưng nó có lẽ không đáng kể.
peterh - Phục hồi Monica
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.