Bạn có thể đặt kích thước bộ đệm đĩa linux tối thiểu?


8

Tôi có một máy Linux khá cũ với 2GB ram, không trao đổi và nó hoạt động rất tốt, với hệ thống sử dụng mọi bộ nhớ không sử dụng để lưu vào bộ nhớ cache có hiệu quả tuyệt vời.

Tuy nhiên, khi tôi sắp hết căng thẳng bộ nhớ (ví dụ:> 1950 MB được phân bổ), nó sẽ chậm để thu thập dữ liệu; Tôi nghi ngờ đó là vì không còn bộ đệm đĩa. Tôi biết rằng kẻ giết người OOM sẽ sớm có hiệu lực, nhưng nó không thường xảy ra ở đó - nó trở nên chậm đến mức tải bắn tới 30-40, không có quá trình nào tạo ra bất kỳ tiến triển nào (do đó không phân bổ thêm bộ nhớ) và Tôi phải khởi động lại nó.

Khi tôi cố gắng chỉ giết một tiến trình để khiến máy phản hồi, ví dụ: bằng cách vào bảng điều khiển (thông qua Alt-F1, đăng nhập và chỉ thực hiện một "killall bad Process"), nó thường hoạt động, ngoại trừ việc tôi phải chờ ~ 10 phút giữa người dùng / mật khẩu và nhận được lời nhắc - tất cả trong khi có hoạt động của đĩa.

Một lần nữa, không có trao đổi, vì vậy nó không trao đổi - nó chỉ bị đập bởi vì nó không còn bộ đệm.

Tôi hầu như chỉ dành riêng 100 MB cho bộ đệm đĩa, điều này sẽ kích hoạt trình diệt OOM trước đó (ít bộ nhớ hơn cho các chương trình), nhưng mặt khác sẽ luôn khiến máy phản ứng nhanh.

Có cách nào làm được việc này không? Tôi chưa thể tìm thấy mục / Proc / kernel hoặc / sys / vm thực hiện loại điều này.


Tôi cũng có cùng một vấn đề, và thật không may, không có câu trả lời nào cho ngày này giúp ích trong vấn đề này.
Krišjāni Nesenbergs

Câu trả lời:


1

Hãy xem / Proc / sys / vm / min_free_kbytes . Đó là giới hạn của kbyte miễn phí kích hoạt kẻ giết người oom. Ngoài ra nó sẽ là tốt để kiểm tra tại các bản ghi cho từ khóa oom-killer để biết những gì đang được giết {propably bạn không muốn giết ssh , bạn nó tốt hơn để renice nó}


Cảm ơn. Tôi đã mở rộng nó, nhưng điều đó dường như không giải quyết được vấn đề - một khi bộ nhớ vật lý gần cạn kiệt, không còn bộ nhớ đệm và máy chạy chậm lại.

Không có sự giúp đỡ nào ở đây, hệ thống vẫn hoàn toàn không phản hồi.
Tronic

Điều này thực sự đã giúp tôi, tôi cũng có ram 2GB và tôi đặt mức này gần 500 MB - hiện tại không có sự chậm lại / treo máy
Krišjāni Nesenbergs

Tôi hiện đang thử nghiệm cài đặt này trên máy trạm của tôi. Tôi có RAM 8 GB và hầu hết thời gian tôi không sử dụng nhiều hơn 5 ... ngoại trừ khi vì một lý do nào đó tôi phải kích hoạt máy ảo Windows cần khoảng 4 GB RAM. Tôi đã thiết lập ZRAM trên hệ điều hành máy chủ của mình vì ổ cứng của tôi là cơ, nhưng nó vẫn trở nên khá chậm với RAM gần như đầy do không gian RAM thấp cho bộ đệm và bộ đệm của hệ thống tập tin. Tôi chỉ sử dụng vm.min_free_kbytes để chắc chắn rằng tôi luôn luôn có ít nhất 2 GB miễn phí và có phần còn lại paged để RAM nén (đó là cách nhanh hơn so với không gian trao đổi bình thường). Sẽ đăng sau với kết quả.
RAKK

1

Chờ đợi kẻ giết người giải phóng bộ nhớ cũng giống như chờ động cơ dừng trên xe của bạn để báo cho bạn biết khi nào đến lúc đổ đầy bình xăng của bạn. Kẻ giết người oom là một công cụ nặng tay của một phương sách cuối cùng và tuyệt vọng cho một cỗ máy bị thiếu tài nguyên. Nó giết chương trình tiếp theo mà nó chạm vào mà không xem xét làm thế nào điều này sẽ ảnh hưởng đến ứng dụng của bạn, khả năng tiếp cận, độ tin cậy, v.v. Khi kẻ giết người oom được gọi, máy chủ của bạn đang thở hổn hển và trong tình trạng nguy kịch.

Thay vào đó, tốt hơn hết là bạn nên thực hiện một cách tiếp cận tích cực trong việc quản lý việc sử dụng bộ nhớ trong môi trường ứng dụng của bạn. Bạn có thể theo dõi / Proc / meminfo cho sự cố và thực hiện hành động thích hợp và điều chỉnh lại khối lượng công việc của bạn trước khi một tình huống nghiêm trọng trở nên tồi tệ.


Tình huống tôi phát hiện ra chính xác là thời gian mà máy chủ của tôi đang thở hổn hển và trong tình trạng nguy kịch. Chỉ mất chưa đến 20 giây từ một máy phản ứng đầy đủ đến mất 1 phút để phản hồi với Ctrl-Alt-F1 (chuyển từ X sang bàn điều khiển). Và đăng nhập là không thể vì nó hết sau 1 phút mà không cần hỏi mật khẩu. Đây là một máy có nhiều quá trình đang chạy; mỗi cái là độc lập KHÔNG phải là vấn đề. Ngoài ra, đây hoàn toàn là một vấn đề về bộ nhớ - CPU vẫn ổn và đĩa vẫn ổn miễn là còn khoảng 50 MB bộ đệm đĩa.

Điều gì xảy ra nếu bạn sử dụng ulimit và nếu một ứng dụng sử dụng vượt ngưỡng để thực hiện hành động?
Nikolaidis Fotis

Vấn đề là tổng của tất cả các ứng dụng; 20 hoặc hơn đang chạy, mỗi cái được phân bổ 20-100 MB. Nó hoạt động tốt trong nhiều tuần, thậm chí vài tháng, nhưng khi tất cả họ muốn có ~ 100 MB được phân bổ cùng một lúc, mọi thứ đều bị hỏng và cháy; Tôi thà để oom_killer giết một trong số họ còn hơn là tôi phải khởi động lại máy. Dù sao, tôi đã bật trao đổi ngay bây giờ - hầu hết các ứng dụng không sử dụng tất cả bộ nhớ của họ mọi lúc, vì vậy máy vẫn ổn định ngay cả khi bị căng thẳng đến hết bộ nhớ vật lý; tuy nhiên, tôi không muốn trao đổi gì cho máy này nếu có thể.

1
Không giải quyết được vấn đề thực tế là sự kết hợp của việc không thiết lập giới hạn sử dụng bộ nhớ phù hợp (ulimits không hữu ích lắm), các ứng dụng dễ dàng bị phân bổ bộ nhớ, kẻ giết người OOM không kích hoạt đủ sớm và lỗi đĩa lớn và không phản hồi gây ra bởi tất cả những điều đó. Tôi chỉ lãng phí 30 phút thời gian của chủ nhân vì máy phát triển sẽ dọn rác trong nửa giờ trong khi biên dịch mã của tôi, thay vì chỉ đơn giản là giết các quy trình Chromium cần để giết (hoặc tự biên dịch) trong chưa đầy một giây và sau đó được thực hiện với nó.
Tronic

Nếu bạn đặt oom_adjchính xác, bạn có thể khiến hệ thống máy tính để bàn của mình hoạt động giống như Android, nơi thực tế hệ thống luôn chạy chống lại kẻ giết người OOM (về mặt kỹ thuật có một "kẻ giết bộ nhớ thấp" và nó được điều chỉnh thông qua /sys/module/lowmemorykiller). Logic là liên tục đánh dấu các quá trình nền không quan trọng là nạn nhân tiềm năng cho kẻ giết người OOM và tìm kiếm các quy trình bị giết và từ từ bắt đầu lại các chương trình bị giết cần thiết để tránh làm quá tải hệ thống. Chỉ cần đảm bảo rằng quy trình tiếp tục khởi chạy lại các quy trình khác được đánh dấu ngoài giới hạn cho kẻ giết người OOM.
Mikko Rantalainen
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.