Score:4

Swappiness บน WSL2 จะถูกรีเซ็ตเป็น 60

ธง cn

ฉันเพิ่งลองติดตั้ง Ubuntu บน Windows (WSL2) ฉันพยายาม ฟรี คำสั่งและใช้หน่วยความจำ swap ไม่กี่บล็อก ฉันคิดที่จะลดความรวดเร็วดังนั้นฉันจึงเพิ่มรายการ vm.swappiness=10 ใน /etc/sysctl.conf. ฉันลองโหลดใหม่ sysctl.confและดูเหมือนว่าจะได้ผล แต่เมื่อฉันลองปิด WSL และเริ่มเซสชันใหม่ ความรวดเร็วถูกรีเซ็ตเป็นค่าเริ่มต้นที่ 60

Ubuntu บน WSL2 แทนที่การตั้งค่านี้เพื่อให้เป็น 60 อีกครั้งหรือไม่

heynnema avatar
ru flag
ไม่ว่า RAM หรือการตั้งค่า vm.swappiness จะมากเพียงใด การสลับบางอย่างจะถูกใช้เกือบตลอดเวลา หากคุณเห็นเพียง "swap ที่ใช้ไปไม่กี่ช่วงตึก" ให้ปล่อย vm.swappiness ไว้ตามลำพัง
Deekshith Anand avatar
cn flag
@heynnema ฉันหมายถึงการแลกเปลี่ยนถูกใช้โดยคำสั่งนั้น อย่างไรก็ตาม ฉันมีแรมเพียงพอ (16 กิ๊ก ซึ่งน่าจะเพียงพอสำหรับการใช้งานของฉัน) เมื่ออัปเดต sysctl.conf และโหลดซ้ำ คำสั่ง free แสดงว่า swap ใช้เป็น 0 ดังนั้น swappinness จึงใช้งานได้จริง และฉันไม่ต้องการให้สิ่งนี้เขียนอย่างต่อเนื่องภายใต้ไฟล์ swap และทำให้ ssd ของฉันเสื่อมสภาพ
heynnema avatar
ru flag
หากคุณดู `free -h` คุณจะยังเห็นบางส่วนถูกใช้งานหลังจากผ่านไประยะหนึ่ง แม้ว่าคุณจะปรับแต่ง vm.swappiness แล้วก็ตาม SSD สมัยใหม่จะไม่เสื่อมสภาพเนื่องจากการสลับ
Score:5
ธง vn

/etc/sysctl.conf มักจะแยกวิเคราะห์โดย Systemd ใน Ubuntu เมื่อเริ่มต้น (ฉันเชื่อว่าผ่าน systemd-sysctl.service). ตั้งแต่ WSL ไม่ได้ใช้ Systemdจะไม่ได้รับ "จัดการ" เมื่อคุณปิดระบบและรีสตาร์ทระบบย่อย WSL สิ่งนี้คล้ายกับที่ฉันอธิบายไว้ในคำตอบของฉัน คำถาม Stack Overflow นี้ (ไม่จำเป็นต้องอ่านตอนนี้ แต่มีรายละเอียดเพิ่มเติมหากคุณต้องการ)

วิธีแก้ไข (เช่นเดียวกับที่ฉันอธิบายไว้ในคำตอบนั้น) คือการใช้ เคอร์เนลบรรทัดคำสั่ง การตั้งค่าสำหรับเคอร์เนลของ WSL2:

  • ใน Windows ของคุณ %ประวัติผู้ใช้% ไดเร็กทอรี (โดยทั่วไปคือ C:\Users\<ชื่อผู้ใช้>) สร้างหรือแก้ไขไฟล์ .wslconfig ด้วยสิ่งต่อไปนี้:

    [wsl2]
    kernelCommandLine = "sysctl.vm.swappiness=10"
    
  • ออกจาก Ubuntu บน WSL (และอินสแตนซ์ WSL อื่น ๆ )

  • ฉบับ ก wsl -- ปิดเครื่อง จาก PowerShell, CMD หรือเมนูเริ่ม

  • เริ่มต้นใหม่

คุณควรหาสิ่งนั้น vm.swappiness ยังคงอยู่ในขณะนี้ โปรดทราบว่าเนื่องจากเซสชัน WSL2 ทั้งหมดใช้เคอร์เนลเดียวกัน ตัวเลือกนี้จะมีผลทั่วโลก นี่เป็นกรณีนี้ไม่ว่าคุณจะตั้งค่าความรวดเร็วอย่างไร (หรือพารามิเตอร์เคอร์เนลใดๆ)

โปรดทราบว่าสิ่งนี้ได้รับการทดสอบย้อนหลังไปถึงอย่างน้อย Windows 10 สร้าง 18363 โดย OP ของคำถาม Stack Overflow


ทางเลือกอื่นๆ

ฉันเชื่อว่า .wslconfig ตัวเลือกน่าจะดีที่สุดสำหรับสิ่งนี้ แต่คุณสามารถ:

  • ใช้ /etc/wsl.conf กับ [บูต] ส่วนใน Windows 11 เพื่อบังคับ ระบบ เพื่อเรียกใช้ในการเริ่มต้นแต่ละครั้ง
  • ใช้โปรไฟล์ผู้ใช้ของคุณเพื่อเรียกใช้ด้วยตนเอง ถ้าคุณไปเส้นทางนี้ ให้ใช้สิ่งที่ชอบ wsl.exe -u รูต sysctl --system.exe เพื่อไม่ต้องพิมพ์รหัสผ่านหรือกำหนดค่า ซูโดเออร์.
Deekshith Anand avatar
cn flag
การแก้ไข .wslconfig ใช้งานได้และทดสอบบน windows 11 แล้ว! สุดยอด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา