ด้วยราคาของ RAM ที่พุ่งสูงขึ้นมากในช่วงนี้ อาจเป็นความคิดที่ดีที่จะเตือนผู้ใช้ Linux ให้เปิดใช้งาน ZRAM เพื่อบีบอัดข้อมูลในหน่วยความจำและเพิ่มประสิทธิภาพการทำงานได้โดยไม่ต้องอัปเกรด RAM หรือช่วยประหยัดค่าใช้จ่ายในการเลือกซื้อบอร์ด SBC รุ่นถัดไป โดยเลือกขนาดหน่วยความจำให้เหมาะสมตั้งแต่แรก
เราเคยเขียนเกี่ยวกับหัวข้อนี้ไปแล้วตอนที่เปิดใช้งาน ZRAM บนบอร์ด ODROID-XU4Q เมื่อปี 2018 โดยใช้ zram-config และในช่วงนั้นก็ได้ทำแบบเดียวกันกับแล็ปท็อป Ubuntu ของเราด้วยแต่ในช่วงไม่กี่วันที่ผ่านมา Firefox ล่มบ่อยครั้งเนื่องจากหน่วยความจำไม่เพียงพอ ทั้งที่ระบบมี RAM ถึง 16GB และการเปิดตัวของ Linux 7.0 ก็ทำให้นึกถึง ZRAM ขึ้นมาอีกครั้ง เพราะมีการเปลี่ยนแปลงบางอย่างที่เกี่ยวข้อง ดังนั้นเราจึงตัดสินใจตรวจสอบการตั้งค่า swap ปัจจุบันบนแล็ปท็อป Ubuntu 24.04 :
|
1 2 3 4 5 6 7 8 9 10 11 |
jaufranc@CNX-LAPTOP-5:~$ zramctl NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram0 lzo-rle 7.6G 6.6G 2.1G 2.1G [SWAP] jaufranc@CNX-LAPTOP-5:~$ swapon NAME TYPE SIZE USED PRIO /swapfile file 8G 5.6G -2 /dev/zram0 partition 7.6G 7.3G 5 jaufranc@CNX-LAPTOP-5:~$ free -mh total used free shared buff/cache available Mem: 15Gi 9.6Gi 4.3Gi 2.4Gi 3.4Gi 5.7Gi Swap: 15Gi 12Gi 2.7Gi |
อัลกอริทึมบีบอัดแบบ LZO ดูเหมือนจะไม่ใช่อัลกอริทึมใหม่แล้ว และคิดว่าเราเคยเห็นการใช้งานการบีบอัดแบบ Zstandard บนระบบอื่นมาก่อน แต่ยูทิลิตี้ zram-config ดูจะเป็นโซลูชันที่ค่อนข้างเก่า และในปัจจุบันก็ถูกแทนที่ด้วย zram-tools แล้ว ดังนั้นจึงตัดสินใจเปลี่ยนมาใช้ตัวใหม่นี้แทน ถ้าคุณยังไม่ได้เปิดใช้งาน ZRAM ด้วย zram-config ก็ไม่จำเป็นต้องทำขั้นตอนนั้น แต่ในกรณีนี้ เราจำเป็นต้องปิดการใช้งาน swap และลบแพ็กเกจเดิมออก (purge) ก่อน:
|
1 2 3 4 5 |
sudo swapoff -a sudo swapoff /dev/zram0 2>/dev/null || true echo 1 | sudo tee /sys/block/zram0/reset 2>/dev/null || true sudo modprobe -r zram sudo apt purge --autoremove zram-config |
เมื่อดำเนินการเสร็จแล้ว เราจึงติดตั้ง zram-tools :
|
1 |
sudo apt install zram-tools |
จากนั้นแก้ไขไฟล์ /etc/default/zramswap ดังนี้ :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Compression algorithm selection ALGO=zstd # Specifies the amount of RAM that should be used for zram # based on a percentage the total amount of available memory # This takes precedence and overrides SIZE below PERCENT=75 ... # Specifies the priority for the swap devices, see swapon(2) # for more details. Higher number = higher priority # This should probably be higher than hdd/ssd swaps. PRIORITY=100 |
เพื่อความปลอดภัย อาจจะต้องการตรวจสอบว่า kernel ว่ารองรับ zstd หรือไม่:
|
1 2 |
jaufranc@CNX-LAPTOP-5:~$ cat /sys/block/zram0/comp_algorithm lzo-rle lzo lz4 lz4hc [zstd] deflate 842 |
จากนั้นรีสตาร์ทบริการ (service) ด้วยพารามิเตอร์ใหม่:
|
1 |
sudo systemctl start zramswap.service |
สุดท้าย มาตรวจสอบว่าทุกอย่างถูกเปิดใช้งานตามที่คาดไว้หรือไม่:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
jaufranc@CNX-LAPTOP-5:~$ cat /sys/block/zram0/comp_algorithm lzo-rle lzo lz4 lz4hc [zstd] deflate 842 jaufranc@CNX-LAPTOP-5:~$ zramctl NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram0 zstd 11.4G 7G 1.4G 1.5G [SWAP] jaufranc@CNX-LAPTOP-5:~$ swapon --show NAME TYPE SIZE USED PRIO /dev/zram0 partition 11.4G 7.8G 100 jaufranc@CNX-LAPTOP-5:~$ free -mh total used free shared buff/cache available Mem: 15Gi 12Gi 561Mi 2.4Gi 3.8Gi 2.8Gi Swap: 11Gi 7.8Gi 3.6Gi jaufranc@CNX-LAPTOP-5:~$ |
ดูเหมือนว่าทุกอย่างทำงานได้ดี ไฟล์ swap บน SSD แบบ NVMe ของเราไม่ได้ถูกใช้งานอีกต่อไป แต่จะลองใช้งานระบบในลักษณะนี้ไปก่อน และจะเปิดใช้งานมันอีกครั้งก็ต่อเมื่อระบบหน่วยความจำไม่เพียงพอ
สุดท้าย เราต้องการตรวจสอบให้แน่ใจว่ามันถูกเปิดใช้งานบน Raspberry Pi 5 ที่มี RAM 2GB และเราลืมไปว่าจริง ๆ แล้วมันถูกเปิดใช้งานมาโดยค่าเริ่มต้นบน Raspberry Pi OS อยู่แล้ว:
|
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ zramctl NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram0 zstd 2G 181.9M 22.7M 29.6M 4 [SWAP] pi@raspberrypi:~ $ free -mh total used free shared buff/cache available Mem: 2.0Gi 1.2Gi 213Mi 38Mi 794Mi 808Mi Swap: 2.0Gi 178Mi 1.8Gi |
โปรดทราบว่าการตั้งค่า (config) สำหรับ rpi-swap จะอยู่ในตำแหน่งที่แตกต่างออกไปคือ /etc/rpi/swap.conf และใช้รูปแบบที่แตกต่างกัน:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# This file is part of rpi-swap. # # Defaults are provided as commented-out options. Local configuration # should be created by either modifying this file, or by creating "drop-ins" in # the swap.conf.d/ subdirectory. The latter is generally recommended. # # See swap.conf(5) for details. [Main] #Mechanism=auto [File] #Path=/var/swap #RamMultiplier=1 #MaxSizeMiB=2048 #MaxDiskPercent=50 #FixedSizeMiB= [Zram] #RamMultiplier=1 #MaxSizeMiB=2048 #FixedSizeMiB= # Writeback settings (for zram+file mechanism): #WritebackTrigger=auto #WritebackInitialDelay=180min #WritebackPeriodicInterval=24h |
รายละเอียดเพิ่มเติมเกี่ยวกับการใช้งาน (implementation) เฉพาะนี้สามารถดูได้บน GitHub หากคุณใช้ระบบปฏิบัติการอื่นบนบอร์ด SBC ใด ๆ คุณอาจต้องตรวจสอบว่าได้เปิดใช้งาน ZRAM (หรือ zswap) แล้วหรือไม่
แปลจากบทความ : Reminder: enable ZRAM on your Linux system to optimize RAM usage (and potentially save money)

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT



