Thứ sáu, 15/11/2013 | 00:00 GMT+7

Cách cấu hình bộ nhớ ảo (Swap File) trên VPS


Mục lục & Lời nói đầu

  1. Giới thiệu - Yêu cầu và lý do
  2. Ưu và nhược điểm - Server
  3. Kiểm tra xem đã Bật trên VPS của bạn chưa
  4. Swap phân vùng, Swap file và Hình ảnh đĩa
  5. Tạo file swap
  6. Bật và tắt Swap
  7. Cài đặt cấu hình, ưu tiên và sysctl
  8. Kết luận

Lời nói đầu

Bài viết này sẽ trình bày những ưu và nhược điểm của việc sử dụng bộ nhớ ảo hoặc file swap (phân trang), xác định xem server của bạn đã sử dụng bộ nhớ ảo hoặc phân trang chưa, sự khác biệt giữa phân vùng swap và file swap , thông tin về cách tạo file swap và cách cấu hình "swappiness" của hệ thống (khả năng sử dụng bộ nhớ ảo cũng như xác định kích thước thích hợp để sử dụng).

Bạn có thể đọc thêm về Swap (Paging)Bộ nhớ ảo trên Wikipedia. Nó sẽ trả lời rất nhiều câu hỏi ngoài phạm vi bài viết này.

Trích dẫn từ bài viết Phân trang (tệp swap ) trên Wikipedia: (nhấn mạnh vào đoạn thứ hai để giải thích rõ ràng)

"Trong hệ điều hành máy tính, phân trang là một trong những sơ đồ quản lý bộ nhớ mà máy tính có thể lưu trữ và truy xuất dữ liệu từ bộ nhớ phụ để sử dụng trong bộ nhớ chính. Trong sơ đồ quản lý bộ nhớ phân trang, hệ điều hành truy xuất dữ liệu từ bộ nhớ phụ trong các khối có cùng kích thước được gọi là các trang. Ưu điểm chính của phân trang qua phân đoạn bộ nhớ là nó cho phép không gian địa chỉ vật lý của một quá trình không liền nhau. Trước khi phân trang được sử dụng, các hệ thống phải đưa toàn bộ chương trình vào bộ nhớ liền nhau, điều này gây ra các vấn đề lưu trữ và phân mảnh khác nhau. "

"Phân trang là một phần quan trọng của việc triển khai bộ nhớ ảo trong hầu hết các hệ điều hành có mục đích chung hiện đại, cho phép chúng sử dụng bộ nhớ đĩa cho dữ liệu không phù hợp với bộ nhớ truy cập ngẫu nhiên vật lý (RAM)."

Ghi chú

Mặc dù swap thường được khuyến khích cho các hệ thống sử dụng ổ cứng quay truyền thống, nhưng sử dụng swap với SSD có thể gây ra sự cố xuống cấp phần cứng theo thời gian. Do sự cân nhắc này, ta không khuyên bạn nên bật tính năng swap trên DigitalOcean hoặc bất kỳ nhà cung cấp nào khác sử dụng bộ nhớ SSD. Làm như vậy có thể ảnh hưởng đến độ tin cậy của phần cứng cơ bản đối với bạn và những người hàng xóm của bạn.

Nếu bạn cần cải thiện hiệu suất của server , ta khuyên bạn nên nâng cấp Server của bạn . Điều này sẽ dẫn đến kết quả tốt hơn nói chung và sẽ giảm khả năng góp phần vào các vấn đề phần cứng có thể ảnh hưởng đến dịch vụ của bạn.

Giới thiệu - Yêu cầu và lý do

Nó là gì và tại sao tôi lại sử dụng nó?

Cho dù bạn có server 512mb hay server 8gb; Arch, Fedora, CentOS, Debian hoặc Ubuntu; các ứng dụng hoặc server / daemon có thể cần nhiều bộ nhớ hơn (hoặc đôi khi được cấp phát nhiều bộ nhớ hơn) so với thực tế bạn có. Cụ thể hơn trong trường hợp của ta , những gì đã được phân bổ cho server ảo để hoàn thành công việc.

Nếu bạn đang xử lý bất kỳ server production nào, bạn cần biết rằng nếu bộ nhớ ảo không được kích hoạt và hệ thống của bạn không còn bộ nhớ trống ... thì nếu một chương trình hoặc dịch vụ - có lẽ là web server của bạn - cần phân bổ thêm bộ nhớ, nó sẽ thất bại! Tùy thuộc vào nền tảng và cấu hình của bạn, điều này có thể dẫn đến nhiều điều kiện không mong muốn hoặc không ổn định bao gồm các ứng dụng khác (tức làcác quy trình khác với quy trình yêu cầu bộ nhớ) buộc phải đóng để giải phóng bộ nhớ cần thiết, dẫn đến việc nó bị lỗi và làm hỏng chương trình - hoặc toàn bộ server - hoàn toàn.

Vì lý do này, cá nhân tôi khuyên mọi người, trên gần như bất kỳ hệ thống nào - có thể là server nước, server chuyên dụng, PC hoặc Mac Windows của bạn hoặc thậm chí cả máy tính bảng hoặc điện thoại Android của bạn - nên có ít nhất một lượng nhỏ bộ nhớ ảo được kích hoạt.

Làm thế nào nó hoạt động

Bộ nhớ ảo cho phép hệ thống của bạn (và do đó là ứng dụng của bạn) RAM ảo bổ sung ngoài những gì hệ thống của bạn có - hoặc trong trường hợp server , những gì được phân bổ. Nó thực hiện điều này bằng cách sử dụng đĩa của bạn để có thêm bộ nhớ 'ảo' và swap dữ liệu trong và ngoài bộ nhớ hệ thống và bộ nhớ ảo khi cần thiết.

Bạn nên biết rằng việc đọc / ghi từ đĩa (thậm chí cả SSD nhanh như chớp của DigitalOcean) chậm hơn ít nhất vài lần so với đọc / ghi từ RAM hệ thống thực. Mặc dù bộ nhớ ảo sẽ cung cấp cho bạn không gian hoạt động, cho phép nhiều ứng dụng / server hơn chạy trên một server và bảo vệ khỏi lỗi hết bộ nhớ, nhưng nó không phải là giải pháp thay thế trong trường hợp bạn thực sự cần thêm bộ nhớ / để nâng cấp server ảo của bạn .

Mặc dù nội dung của bài viết này có vẻ tầm thường đối với administrator dày dạn, nhưng tôi cảm thấy đó là thông tin có giá trị cho bất kỳ ai sử dụng dịch vụ lưu trữ của DigitalOcean, đặc biệt là những người mới sử dụng DigitalOcean, hệ thống VPS nói chung hoặc quản lý server của riêng họ.

Yêu cầu

Các yêu cầu khá đơn giản và kỹ thuật này sẽ hoạt động trên tất cả các bản phân phối và loại server - trên thực tế, nó thậm chí sẽ hoạt động trên điện thoại hoặc máy tính bảng Android của bạn (nếu bạn đã cài đặt root & busybox).

  • server hoặc server ảo, được bật nguồn (hoặc server chuyên dụng, hệ thống dựa trên linux, v.v.)
  • quyền truy cập terminal root (ssh, vnc, local)
  • các lệnh miễn phí , swapon , swapoff , dd , mkswap sẽ được sử dụng và tất cả những lệnh này sẽ có sẵn trên bất kỳ nền tảng nào bạn sử dụng với server của bạn .

Hầu hết các nền tảng đều tự động sử dụng và quản lý bộ nhớ ảo và sẽ tự động tạo một phân vùng swap đặc biệt hoặc một file trên phân vùng hệ thống trong khi cài đặt với kích thước thường được dựa trên hoặc nhiều RAM hệ thống có sẵn, chẳng hạn. 1024mb trao đổi lấy 512mb RAM.

Điều này không phải lúc nào cũng xảy ra với các server ảo, bao gồm các server của DigialOcean.

Ưu và nhược điểm - Server

Các server của DigitalOcean sử dụng SSD (đĩa trạng thái rắn) nhanh hơn nhiều lần so với ổ cứng thông thường và không bị thời gian tìm kiếm thấp (do đầu ổ cứng phải di chuyển vật lý trên đĩa để đọc dữ liệu) và yêu cầu IO thấp mỗi giây . SSD có thể đọc đồng thời từ nhiều vùng trong khi ổ cứng thường chỉ có thể đọc từ một vùng tại một thời điểm.

Mặc dù không bao giờ là một ý kiến hay - đặc biệt là với các web server , mail, db - phụ thuộc nhiều vào bộ nhớ ảo, nhưng ổ SSD của DO giúp việc sử dụng bộ nhớ ảo bớt khó khăn hơn và hợp lý hơn.

Ưu điểm

  • Bảo vệ chống lại lỗi OOM (hết bộ nhớ), sự cố, tính không ổn định / không thể đoán trước của hệ thống liên quan đến bộ nhớ.
  • Tăng bộ nhớ khả dụng cho hệ thống và cho phép nhiều chương trình chạy đồng thời và an toàn hơn
  • Bộ nhớ SSD của DigtalOcean giúp giảm độ trễ và sự cố liên quan đến máy ảo trong khi tăng thời gian phản hồi phân trang

Nhược điểm

  • Có khả năng xảy ra sự cố: khi hệ thống đang bận và tích cực sử dụng trung bình nhiều bộ nhớ hơn khả năng vật lý sẵn có, hệ thống VM buộc phải liên tục ' swap ' dữ liệu chương trình đến và từ đĩa và vào và ra khỏi RAM khi cần thiết.Có lẽ tất cả ta đều đã thấy kết quả của điều này trong một PC chạy Windows hơi quá tải với ổ cứng dường như bị mài mòn không ngừng. Nó chậm và không vui. Tuy nhiên, nó có thể tránh được với cấu hình chính xác và đây là một vấn đề không tồi ở đây - do tốc độ của SSD của DigitalOcean.
  • Sử dụng không gian đĩa, thường phụ thuộc vào bộ nhớ hệ thống. Nếu server của bạn có 512mb, tôi khuyên bạn nên sử dụng 512mb-1,5gb để swap ; tuy nhiên, đó là dung lượng ít hơn 512mb-1,5gb mà bạn sẽ có sẵn trên đĩa server của bạn .
  • Nó thường được khuyến khích và ưu tiên sử dụng phân vùng đĩa chuyên dụng để trao đổi; tuy nhiên điều này không thể xảy ra trong một server và thay vào đó ta phải sử dụng file swap / ảnh đĩa.

Kiểm tra xem đã Bật trên VPS của bạn chưa

Hoàn toàn có thể cấu hình của bạn đã sử dụng bộ nhớ ảo. Các lệnh dưới đây sẽ chỉ cho bạn cách xác định xem nó có được bật hay không, và nếu có thì đó là kích thước và cấu hình.

Mở một terminal hoặc SSH / VNC vào server của bạn - các lệnh này đều được thực hiện trong một terminal hoặc shell .

Đừng quên, để thực hiện thay đổi, bạn cần phải root. Bạn có thể kiểm tra user mình đã đăng nhập bằng lệnh whoami . Nếu nó không phản hồi với root hoặc 0, bạn có thể nhập su để bắt đầu root shell.

Bạn có thể kiểm tra xem server nước của bạn đã được kích hoạt bộ nhớ ảo chưa bằng lệnh lệnh "miễn phí" tại dấu nhắc trong một terminal :

bash-root@my.server:/# free

Lệnh "miễn phí" hiển thị bộ nhớ ảo và vật lý có sẵn của hệ thống.

Nếu bạn đã bật bộ nhớ ảo, bạn có thể chuyển đến phần "Lưu ý về swap phân vùng" và sau đó là phần cấu hình. Khi được kích hoạt, kết quả sẽ giống như sau:

bash-root@my.server:/# free
             total       used       free     shared    buffers     cached
Mem:        361996     360392       1604          0       1988      54376
-/+ buffers/cache:     304028      57968
Swap:       249896          0     249896
bash-root@my.server:/# _

Nếu nó không được kích hoạt, kết quả sẽ như thế này:

bash-root@my.server:/# free
             total       used       free     shared    buffers     cached
Mem:        361996     360392       1604          0       2320      54444
-/+ buffers/cache:     303628      58368
Swap:            0          0          0
bash-root@my.server:/# _

Bạn cũng có thể thu hẹp kết quả với free | grep Swap . Điều này sẽ chỉ hiển thị Máy ảo swap : dòng, tổng, đã sử dụng và miễn phí. ( Lưu ý , theo mặc định, grep có phân biệt chữ hoa chữ thường!)

bash-root@my.server:/# free | grep Swap
Swap:       249896          0     249896
bash-root@my.server:/# _

Swap phân vùng, Swap file và Hình ảnh đĩa

Lưu ý về Swap phân vùng

Nói chung, đối với các hệ thống dựa trên Linux, bạn nên có một phân vùng swap chuyên dụng trên đĩa cứng của bạn . Hầu hết các hệ thống sẽ tự động thực hiện việc này trong quá trình cài đặt bình thường và nếu swap của bạn đã được cấu hình , rất có thể nó đã được cài đặt với một phân vùng. Thật không may, ngoài việc cấu hình cài đặt sysctl bên dưới, việc thay đổi kích thước các phân vùng trao đổi nằm ngoài phạm vi của bài viết này.

Tuy nhiên, bạn vẫn có thể sử dụng phương pháp được trình bày ở đây để thêm file swap và tăng bộ nhớ ảo có sẵn ở trên và ngoài vùng swap được phân vùng. Nhưng nếu một swap đã được cấu hình và quản lý bởi hệ thống, thì bộ nhớ ảo bổ sung có thể không cần thiết và tốt hơn là để lại cài đặt mặc định trừ khi bạn biết mình đang làm gì.

Tệp Swap là gì?

Thay vì sử dụng một phân vùng chuyên dụng, một số hệ thống (đặc biệt là Windows) sẽ lưu trữ bộ nhớ ảo của chúng trong một file đặc biệt. Đây cũng là một lựa chọn khi việc phân vùng là không thể hoặc không khả thi. Trên Linux, file này thực sự là một ảnh đĩa.

Hình ảnh đĩa là gì?

Hình ảnh đĩa thường bao gồm các file và thông tin về các file đó, cũng như hệ thống file chứa chúng.

Ví dụ bao gồm ảnh chụp nhanh server của bạn (mà tôi thích gọi là bông tuyết - những server đông lạnh), một chức năng tạo hình ảnh đĩa của toàn bộ server của bạn để backup , nhân bản, di chuyển, v.v.

Một ví dụ điển hình khác là hầu hết các bản phân phối Linux (hoặc bản phân phối) đều có dạng ảnh đĩa, thường ở định dạng .iso , cho phép bạn mount hoặc ghi chúng vào đĩa.

Dù bạn sử dụng hình ảnh theo cách nào, điều quan trọng cần nhớ là chúng lưu trữ thông tin hệ thống file và như vậy chúng được dùng giống như hệ thống file mà chúng được tạo ảnh - hoặc tạo lại hoàn toàn.

Tạo file swap

Trong trường hợp server , ta không thể phân vùng bộ nhớ của bạn , vì vậy ta cần sử dụng hình ảnh đĩa. * Hệ điều hành NIX sử dụng một hệ thống file chuyên dụng để trao đổi, đây là lý do tại sao như tôi đã nói ở trên, việc sử dụng phân vùng được ưu tiên hơn. Những gì ta có thể làm là tạo một ảnh đĩa trống có kích thước theo bộ nhớ ảo cần thiết, khởi tạo nó bằng hệ thống file swap , sau đó bật nó lên.

Trước tiên, bạn cần quyết định nơi đặt file này. Bạn cần có đủ dung lượng trống trên phân vùng mà bạn đặt nó cho bất kỳ lượng MB nào bạn sử dụng để swap , ví dụ. 512mb trao đổi tạo ra một file swap ~ 512mb.

Bạn có thể sử dụng lệnh df -h để xem các phân vùng và hệ thống file được mount của bạn , cũng như kích thước và dung lượng trống của chúng.

Tôi khuyên bạn nên đặt file này trong / var và gọi nó là "swap.img". Ta sẽ cd thành / var và tạo file này, sau đó đặt quyền của nó thành 600.

LƯU Ý: Điều quan trọng đối với bảo mật là đặt quyền đối với file thành 600 để không user nào khác có thể đọc file trực tiếp, nếu không bộ nhớ hệ thống có thể bị đọc hoặc tệ hơn.

bash-root@my.server:/# cd /var
bash-root@my.server:/var# touch swap.img
bash-root@my.server:/var# chmod 600 swap.img
bash-root@my.server:/var# _

Định cỡ

Bây giờ ta sẽ kích thước file . Kích thước là quan trọng và kích thước tốt nhất sẽ khác nhau tùy thuộc vào hệ thống và trường hợp sử dụng của bạn.

Nói chung, tôi khuyên bạn nên dùng 1-2 lần RAM hệ thống khả dụng. Vì vậy, nếu bạn có server 512mb, hãy sử dụng swap 512mb-1gb. Nếu bạn có server 1gb, hãy sử dụng swap 1gb-2gb, v.v. Đây không phải là một luật khó và nhanh, ví dụ: nếu bạn có server 4gb, tốt nhất có thể sử dụng ít (512mb) hoặc không swap gì cả.

Nó hoàn toàn phụ thuộc vào việc sử dụng của bạn, nhưng những hướng dẫn này được điều chỉnh cho một server 512mb. Ta sẽ sử dụng lệnh dd để điền vào file swap của ta bằng các số 0 hoặc hư vô để kéo nó ra kích thước ta cần. Trong trường hợp này, ta đang sử dụng 1gb hoặc 1024mb. Việc này có thể phải mất một ít thời gian.

bash-root@my.server:/var# dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 4.0868896 s, 253 MB/s
bash-root@my.server:/var# _

Chuẩn bị hình ảnh đĩa

Và ở đây, ta sẽ khởi tạo hệ thống file swap .

bash-root@my.server:/var# mkswap /var/swap.img
Setting up swapspace version 1, size = 1020 GiB
no label, UUID=72761533-8xbe-436l-b07e-c0sabe9cedf3
bash-root@my.server:/var# _

Sau khi hoàn tất, nó đã sẵn sàng để sử dụng!

Bật và tắt Swap

Bật file swap của bạn

Ta sẽ sử dụng swapon để kích hoạt nó. Khi thành công sẽ không có kết quả , nhưng bạn có thể kiểm tra free .

bash-root@my.server:/var# swapon /var/swap.img
bash-root@my.server:/var# free
             total       used       free     shared    buffers     cached
Mem:        503596     478928      24668          0      38832     102384
-/+ buffers/cache:     337712     165884
Swap:      1048572       1780    1046792
bash-root@my.server:/var# _

Bạn có thể sử dụng swapoff /var/swap.img để tắt nó.

Bật file swap của bạn trong khi khởi động

Lưu ý swapon chỉ kích hoạt file để khởi động hiện tại của bạn; nếu bạn khởi động lại, nó sẽ không trực tuyến trở lại trừ khi bạn tập lệnh cho swapon của bạn để chạy khi khởi động hoặc thay đổi /etc/fstab , trong hầu hết các trường hợp sẽ dễ dàng hơn nhiều và là phương pháp ta sẽ sử dụng ở đây.

Tất cả những gì bạn phải làm là thêm một dòng vào file /etc/fstab để làm cho nó sẵn sàng khi khởi động. Hãy cẩn thận! Tệp này có thể phá vỡ hệ thống của bạn nếu nó không được định dạng đúng hoặc nếu nó bị overrides . Nếu bạn đặt swap.img của bạn trong / var, bạn có thể sao chép / dán lệnh dưới đây mà không gặp vấn đề gì. (Nếu bạn nhập, hãy đảm bảo có hai ký hiệu>, việc sử dụng một ký hiệu sẽ overrides lên file thay vì thêm một dòng ở cuối.

bash-root@my.server:/var# echo "/var/swap.img    none    swap    sw    0    0" >> /etc/fstab
bash-root@my.server:/var# _

Cài đặt cấu hình, ưu tiên và sysctl

Cấu hình

Khi không gian swap của bạn trực tuyến, không có nhiều thứ cần được cấu hình . Bạn thậm chí có thể dừng lại ở đây, nếu bạn không quan tâm đến các chi tiết phức tạp - một khi nó được bật, nói chung, nó sẽ hoạt động tốt đối với hầu hết các cài đặt .

Ưu tiên

Nếu bạn đang sử dụng file swap hoặc phân vùng bao gồm nhiều thiết bị và loại thiết bị (không chắc trên một server ), bạn có thể cần sắp xếp mức độ ưu tiên cho từng khu vực swap này, sử dụng bộ nhớ không tải nhanh hơn hoặc nhiều hơn so với tốc độ chậm hơn và / hoặc lưu trữ bận hơn. Trong hầu hết các trường hợp, bạn có thể chỉ định mức độ ưu tiên làm tham số để swap hoặc trong /etc/fstab .

Hệ thống sẽ sử dụng các khu vực swap có mức độ ưu tiên cao hơn trước khi sử dụng các khu vực swap có mức độ ưu tiên thấp hơn. swaon -p Ví dụ:

bash-root@my.server:/var# swapon -p 100 /var/swap.img
bash-root@my.server:/var# swapon -p 10 /mnt/SecondDrive/swap.img

Và, các ưu tiên của /etc/fstab có thể được đặt bằng cách sử dụng tham số pri= , như sau:

/var/swap.img none swap defaults,pri=100 0 0
/mnt/SecondDrive/swap.img none swap defaults,pri=10 0 0

cài đặt sysctl (và sysfs)

Ta sẽ sử dụng lệnh sysctl để thay đổi cài đặt dành riêng cho trình quản lý bộ nhớ ảo Linux.

Chỉ có một cài đặt mà tôi khuyên bạn nên thay đổi: vm.swappiness . Cài đặt này cho trình xử lý Linux kernel / VM biết khả năng có thể sử dụng VM. Nó là một giá trị phần trăm, từ 0 đến 100.

Nếu bạn đặt giá trị này thành 0, trình xử lý VM sẽ ít có khả năng sử dụng bất kỳ không gian swap có sẵn nào và trước tiên nên sử dụng tất cả bộ nhớ hệ thống có sẵn. Nếu bạn đặt nó thành 100, trình xử lý VM sẽ có nhiều khả năng sử dụng không gian swap có sẵn và sẽ cố gắng để trống phần lớn bộ nhớ hệ thống để sử dụng.

Cá nhân tôi khuyên bạn nên sử dụng giá trị 30%, đây sẽ là một phương tiện tốt giữa swap và bộ nhớ hệ thống. Xin lưu ý giá trị này là một mục tiêu hơn là một luật cứng.

Dưới đây là ví dụ về cách sửa đổi cài đặt sysctl. Để biết thêm thông tin, bạn có thể nhập sysctl --help hoặc man sysctl .

bash-root@my.server:/var# sysctl -w vm.swappiness=30
vm.swappiness = 30
bash-root@my.server:/var# _

Bạn cũng có thể chạy sysctl -a để liệt kê TẤT CẢ các tùy chọn sysctl (không chỉ VM) hoặc sysctl -a | grep vm. .

Hoặc, để xem một cài đặt duy nhất (bạn có thể thay đổi tên khóa sau lệnh grep cho mỗi cài đặt):

bash-root@my.server:/var# sysctl -a | grep vm.swappiness
vm.swappiness = 30
bash-root@my.server:/var# _

Có nhiều cài đặt khác cho Linux VM (vm. *) - mặc dù chúng nằm ngoài phạm vi chung của bài viết này và tôi thường khuyên bạn không nên thay đổi cài đặt của chúng. Tuy nhiên, tôi đã đưa vào một danh sách nhỏ các tùy chọn ở cuối bài viết này (trong PHỤ LỤC) có thể đáng để tinh chỉnh hoặc tìm hiểu và tôi đã thêm các giá trị được đề xuất của bạn (trong ngoặc) cho các tùy chọn đó.

Trang web nhân Linux có danh sách đầy đủ các tùy chọn và cách sử dụng chúng, mặc dù không phải mọi nhân đều có thể triển khai tất cả các tùy chọn. Tại thời điểm viết, tài liệu này đã hơi lỗi thời nhưng không nghĩa là vô dụng hoặc thiếu ý nghĩa. Đây là liên kết: https://www.kernel.org/doc/Documentation/sysctl/vm.txt .

Xin lưu ý một số mô tả trong tài liệu đó đề cập đến cài đặt là 'tệp' và đó là vì chúng cũng có thể truy cập / cấu hình thông qua hệ thống SysFS (Wikipedia) của Linux.

Kết luận

Cảm ơn bạn đã đọc bài viết của tôi. Đến đây bạn sẽ hiểu tầm quan trọng của phân trang / swap file đối với sự ổn định đối với môi trường production và trong ngữ cảnh server hoặc máy ảo.

Comment , chỉnh sửa, cookie được đánh giá cao! nom Nom Nom..

Tài liệu tham khảo và Phụ lục

Tài liệu tham khảo được sử dụng, liên kết: Tài liệu máy ảo nhân Linux (kernel.org) Hệ thống SysFS (Wikipedia) Swap (Phân trang) (Wikipedia) Bộ nhớ ảo (Wikipedia)

Dưới đây là danh sách các tùy chọn liên quan đến sysctl / sysfs vm có thể đáng để tinh chỉnh hoặc tìm hiểu, cũng như giá trị đề xuất của tôi cho một số cài đặt. Các mô tả này cố ý ngắn gọn - vui lòng tham khảo liên kết tham khảo kernel.org để biết đầy đủ chi tiết.

dirty_background_bytes**
	
	Contains the amount of dirty memory at which the background kernel flusher threads
	will start writeback.
		
	Note: dirty_background_bytes is the counterpart of dirty_background_ratio. Only
	one of them may be specified at a time. When one sysctl is written it is
	immediately taken into account to evaluate the dirty memory limits and the
	other appears as 0 when read.

dirty_background_ratio**
	
	Contains, as a percentage of total system memory, the number of pages at which
	the background kernel flusher threads will start writing out dirty data.
	
	Note: dirty_background_ratio is the counterpart of dirty_background_bytes. Only
	one of them may be specified at a time. See above.

dirty_bytes**
	
	Contains the amount of dirty memory at which a process generating disk writes
	will itself start writeback.
	
	Note: dirty_bytes is the counterpart of dirty_ratio. Only one of them may be
	specified at a time. When one sysctl is written it is immediately taken into
	account to evaluate the dirty memory limits and the other appears as 0 when
	read.

dirty_expire_centisecs**

	This tunable is used to define when dirty data is old enough to be eligible
	for writeout by the kernel flusher threads.  It is expressed in 100'ths
	of a second.  Data which has been dirty in-memory for longer than this
	interval will be written out next time a flusher thread wakes up.

dirty_ratio**

	Contains, as a percentage of total system memory, the number of pages at which
	a process which is generating disk writes will itself start writing out dirty
	data.
	
	Note: dirty_bytes is the counterpart of dirty_ratio. Only one of them may be
	specified at a time. See above.

dirty_writeback_centisecs**

	The kernel flusher threads will periodically wake up and write `old' data
	out to disk.  This tunable expresses the interval between those wakeups, in
	100'ths of a second.
	
	Setting this to zero disables periodic writeback altogether.

drop_caches**

	Writing to this will cause the kernel to drop clean caches, dentries and
	inodes from memory, causing that memory to become free.

laptop_mode** (0 or Off for servers)

	laptop_mode is a knob that controls "laptop mode". All the things that are
	controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.

memory_failure_recovery** (1 or On if supported)

	Enable memory failure recovery (when supported by the platform)
	
	1: Attempt recovery.
	
	0: Always panic on a memory failure.

min_free_kbytes** (2048kb to 4096kb)

	This is used to force the Linux VM to keep a minimum number
	of kilobytes free.  The VM uses this number to compute a
	watermark[WMARK_MIN] value for each lowmem zone in the system.
	Each lowmem zone gets a number of reserved free pages based
	proportionally on its size.
	
	Some minimal amount of memory is needed to satisfy PF_MEMALLOC
	allocations; if you set this to lower than 1024KB, your system will
	become subtly broken, and prone to deadlock under high loads.
	
	Setting this too high will OOM your machine instantly.

oom_dump_tasks**

	Enables a system-wide task dump (excluding kernel threads) to be
	produced when the kernel performs an OOM-killing and includes such
	information as pid, uid, tgid, vm size, rss, nr_ptes, swapents,
	oom_score_adj score, and name.  This is helpful to determine why the
	OOM killer was invoked, to identify the rogue task that caused it,
	and to determine why the OOM killer chose the task it did to kill.
	
oom_kill_allocating_task**

	This enables or disables killing the OOM-triggering task in
	out-of-memory situations.
	
overcommit_memory**

	This value contains a flag that enables memory overcommitment.

overcommit_ratio**

	When overcommit_memory is set to 2, the committed address
	space is not permitted to exceed swap plus this percentage
	of physical RAM.  See above.

page-cluster**

	page-cluster controls the number of pages up to which consecutive pages
	are read in from swap in a single attempt. This is the swap counterpart
	to page cache readahead.
	
panic_on_oom** (0 or Off/disabled)

	This enables or disables panic on out-of-memory feature.

swappiness** (30 to 50)

	This control is used to define how aggressive the kernel will swap
	memory pages.  Higher values will increase agressiveness, lower values
	decrease the amount of swap.

vfs_cache_pressure**

	Controls the tendency of the kernel to reclaim the memory which is used for
	caching of directory and inode objects.

Các phần được trích dẫn có thể được đăng ký bản quyền hoặc được bảo vệ theo cách khác được sử dụng cho các mục đích hướng dẫn như certificate sử dụng hợp lệ của chúng.

Đệ trình bởi: Jai Boudreau

Tags:

Các tin liên quan