Máy chủ Linux đổi chỗ trước khi bộ nhớ đầy


0

Tôi dự kiến ​​tất cả RAM sẽ được sử dụng trước khi trải nghiệm trao đổi, nhưng tôi có kết quả kỳ lạ này trong htop:

Screenshot of htop running on the server.

Có nghĩa là trên máy chủ của tôi có 24GB RAM, phần mềm của tôi đã hoán đổi 1GB bộ nhớ vào đĩa, khi chúng chỉ sử dụng tổng cộng 23GB bộ nhớ.

Tôi đã không mong đợi hoán đổi khi sử dụng ít bộ nhớ hơn khả dụng trên phần cứng.


" Tôi dự kiến ​​tất cả RAM sẽ được sử dụng trước đây để trải nghiệm trao đổi ... "Tại sao? Tìm kiếm Siêu người dùng cho swap.
Ron Maupin

Bạn là gì trao đổi cài đặt? Từ vẻ bề ngoài của nó, điều này là bình thường; 90,8% RAM của máy chủ đang sử dụng, thực sự gần đầy; hầu hết các hệ thống sẽ trao đổi khi bộ nhớ gần đầy. Bạn có thể buộc hệ thống không trao đổi trừ khi thực sự cần thiết bằng cách đặt swappiness thành 0, nhưng điều này không được khuyến khích.
bwDraco

Dựa trên các câu hỏi trước đây của bạn, tôi cho rằng hệ thống của bạn đang chạy Linux. Nếu đây không phải là trường hợp, hãy chắc chắn chỉnh sửa câu hỏi của bạn để phản ánh điều này.
bwDraco

Nó cũng đáng để xem xét yoiu gần như không có ram ở chế độ chờ hoặc như vậy. Ram của bạn là có thật không được sử dụng rất nhiều.
Journeyman Geek

Câu trả lời:


0

Hành vi này được kiểm soát thông qua cài đặt kernel được gọi là vm.swappiness, có thể được đặt trong phạm vi từ 0 đến 100. Giá trị mặc định là 60 sẽ khiến hệ thống hoán đổi phần nào trước khi bộ nhớ vật lý hoàn toàn đầy đủ, giúp duy trì hiệu suất dưới áp suất bộ nhớ, trong khi không trao đổi quá nhiều để làm giảm hiệu suất đến đập .

Điều này có thể được vô hiệu hóa bằng cách đặt swappiness thành 0, trong trường hợp đó hệ thống sẽ không trao đổi trừ khi thực sự cần thiết. Điều này có thể có ý nghĩa nếu bạn thường có nhiều RAM miễn phí. Tuy nhiên, hiệu suất sẽ rơi xuống một vách đá ngay khi bộ nhớ vật lý của hệ thống của bạn bị lấp đầy hoàn toàn do hệ thống đột nhiên bị buộc phải trao đổi vào thời điểm không phù hợp khi ứng dụng cần bộ nhớ, thay vì trước và không được đề xuất trong trường hợp của bạn là máy chủ của bạn đang chạy gần đầy

Có lẽ tốt hơn là bạn nên đặt swappiness thành giá trị thấp (nhưng không khác) như 10, điều này sẽ giảm sự hoán đổi không cần thiết trong khi không đợi đến giây phút cuối cùng để giải phóng RAM khi chương trình cần. Cài đặt tốt nhất phụ thuộc vào môi trường của bạn, vì vậy hãy thử nghiệm với các cài đặt khác nhau cho đến khi bạn nhận được kết quả tốt nhất.

Để thay đổi cài đặt swappiness, hãy viết giá trị mong muốn vào /proc/sys/vm/swappiness sử dụng echo làm gốc. Để thay đổi vĩnh viễn, thêm một vm.swappiness dòng đến /etc/sysctl.conf (thay thế 10 bằng giá trị mong muốn của bạn khi cần):

vm.swappiness = 10

1

Các hệ thống vận hành sẽ không đợi giây cuối cùng để trao đổi bộ nhớ vì lý do hiệu suất. Việc triển khai sẽ phụ thuộc vào các hệ điều hành bạn đang sử dụng, nhưng hầu hết các hệ điều hành hiện đại sẽ trao đổi tốt trước khi bộ nhớ vật lý đầy. Trao đổi thường xảy ra khi hệ thống không tải đầy đủ vì vậy khi có nhiều công việc hơn, nó có đủ RAM và sẵn sàng xử lý công việc.

Đối với các hệ thống máy tính để bàn, một số hệ điều hành (ví dụ: Windows) thậm chí sẽ tải trước các phần mềm bạn thường sử dụng vào bộ nhớ và đưa dữ liệu hiện không được sử dụng vào đĩa cứng. Điều này không hoạt động tốt khi hệ thống được cài đặt mới nhưng sẽ trở nên tốt hơn và tốt hơn khi bạn sử dụng nó.


Tôi không chắc đoạn sau (mô tả một công nghệ được gọi là Siêu tải ) thực sự áp dụng ở đây. Hệ thống chỉ cần tải trước dữ liệu ứng dụng vào bộ nhớ chưa sử dụng, được giải phóng ngay lập tức khi ứng dụng cần bộ nhớ. Ngoài ra, +1.
bwDraco

@bwDraco Có, những bộ nhớ đó sẽ được giải phóng nếu khối lượng công việc "không mong muốn" xuất hiện và một ứng dụng khác cần nó, nhưng Windows vẫn sẽ sử dụng tệp Paging (trên ổ cứng) để đưa thêm dữ liệu "SuperFetched" vào RAM. i.imgur.com/8hnfebN.png
Marius Tancredi
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.