Điểm:4

Swappiness trên WSL2 được đặt lại thành 60

lá cờ cn

Gần đây tôi đã thử cài đặt Ubuntu trên Windows (WSL2). tôi đã thử miễn phí lệnh và một số khối bộ nhớ trao đổi đã được sử dụng. Tôi đã nghĩ đến việc giảm bớt sự thay đổi nên tôi đã thêm mục vm.swappiness=10 Trong /etc/sysctl.conf. Tôi đã thử tải lại sysctl.conf, và nó dường như hoạt động, Nhưng khi tôi thử tắt WSL và bắt đầu một phiên mới, tính hoán đổi được đặt lại về giá trị mặc định là 60.

Ubuntu trên WSL2 có ghi đè cài đặt này để đặt lại 60 không?

heynnema avatar
lá cờ ru
Bất kể bao nhiêu RAM hoặc cài đặt của vm.swappiness, một số hoán đổi hầu như sẽ luôn được sử dụng. Nếu bạn chỉ thấy "một vài khối trao đổi được sử dụng", thì hãy để nguyên vm.swappiness.
Deekshith Anand avatar
lá cờ cn
@heynnema Vâng, ý tôi là trao đổi đã được sử dụng bởi tuyên bố đó. Tuy nhiên, tôi có đủ ram (16 hợp đồng biểu diễn, có lẽ đủ cho trường hợp sử dụng của tôi). Khi cập nhật sysctl.conf và tải lại nó, lệnh miễn phí cho thấy hoán đổi được sử dụng là 0. Vì vậy, tính hoán đổi đó thực sự đã hoạt động. Và tôi không muốn thứ này liên tục ghi dưới tệp hoán đổi và làm hao mòn ssd của tôi.
heynnema avatar
lá cờ ru
Nếu bạn xem `free -h`, bạn vẫn sẽ thấy một số được sử dụng sau một thời gian, mặc dù bạn đã chỉnh sửa vm.swappiness. SSD hiện đại sẽ không bị hao mòn do hoán đổi.
Điểm:5
lá cờ vn

/etc/sysctl.conf thường được phân tích cú pháp bởi Systemd trong Ubuntu khi khởi động (tôi tin qua systemd-sysctl.service). kể từ WSL không sử dụng Systemd, nó không được "xử lý" khi bạn tắt và khởi động lại hệ thống con WSL. Điều này tương tự như những gì tôi mô tả trong câu trả lời của mình cho câu hỏi Stack Overflow này (không cần phải đọc nó bây giờ, nhưng nó có nhiều chi tiết hơn nếu bạn cần).

Giải pháp (cũng như tôi mô tả trong câu trả lời cụ thể đó) là sử dụng kernelCommandLine cài đặt cho kernel của WSL2:

  • Trong Windows của bạn %Thông tin người dùng% thư mục (thường là C:\Users\<tên người dùng>) tạo hoặc chỉnh sửa tệp .wslconfig với những điều sau đây:

    [wsl2]
    kernelCommandLine = "sysctl.vm.swappiness=10"
    
  • Thoát Ubuntu trên WSL (và bất kỳ phiên bản WSL nào khác)

  • phát hành một wsl --shutdown từ PowerShell, CMD hoặc Menu Bắt đầu

  • Khởi động lại

Bạn nên tìm rằng vm.swappiness hiện vẫn được duy trì. Lưu ý rằng vì tất cả các phiên WSL2 chia sẻ cùng một kernel nên tùy chọn này sẽ có hiệu lực trên toàn cầu. Đây là trường hợp bất kể bạn thiết lập tính hoán đổi như thế nào (hoặc bất kỳ tham số kernel nào).

Cũng lưu ý rằng điều này đã được thử nghiệm từ ít nhất là Windows 10 build 18363 bởi OP của câu hỏi Stack Overflow đó.


Các lựa chọn thay thế khác

tôi tin rằng .wslconfig tùy chọn có lẽ là tốt nhất cho việc này, nhưng bạn cũng có thể:

  • Sử dụng /etc/wsl.conf với [khởi động] phần trên Windows 11 để buộc hệ thống để chạy trên mỗi lần khởi động.
  • Sử dụng hồ sơ người dùng của bạn để chạy nó theo cách thủ công. Nếu bạn đi theo con đường này, hãy sử dụng một cái gì đó như wsl.exe -u root sysctl --system để tránh phải nhập mật khẩu hoặc cấu hình sudoers.
Deekshith Anand avatar
lá cờ cn
Bản sửa lỗi .wslconfig hoạt động và đã được thử nghiệm trên windows 11! Thật tuyệt vời

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.