/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
เพื่อไม่ต้องพิมพ์รหัสผ่านหรือกำหนดค่า ซูโดเออร์
.