SWAP là gì?
SWAP, hay còn được biết đến với tên gọi bộ nhớ ảo, RAM ảo, là một kỹ thuật sử dụng trong các hệ điều hành như Ubuntu để giúp máy tính tiếp tục hoạt động mượt mà khi RAM bị sử dụng hết. Trong trường hợp này, hệ thống sẽ sử dụng một phần của ổ đĩa cứng như một phần mở rộng
của RAM, di chuyển dữ liệu ít sử dụng từ RAM sang khu vực SWAP.
Đặc điểm của SWAP
Hiệu suất: Mặc dù SWAP giúp hệ thống không bị treo khi RAM đầy, tốc độ truy cập ổ đĩa cứng thường chậm hơn nhiều so với RAM. Do đó, việc sử dụng SWAP sẽ không nhanh bằng việc truy cập trực tiếp vào RAM.
Vị trí lưu trữ: SWAP có thể tồn tại dưới dạng một file trên hệ thống (SWAP file) hoặc dưới dạng một phân vùng riêng biệt trên ổ đĩa (SWAP partition).
Kích thước: Mặc dù không có quy tắc cụ thể, kích thước của khu vực SWAP thường được đề xuất dựa trên kích thước RAM của máy tính.
Tại sao cần sử dụng SWAP?
Việc sử dụng SWAP thay thế cho RAM tuy chậm nhưng vẫn hơn là máy tính bị treo khi không đủ dung lượng RAM. Bạn có thể chỉ định khi nào hệ thống được phép sử dụng SWAP, do đó dù bạn có ít hay nhiều dung lượng RAM thì vẫn luôn nên sử dụng SWAP để đảm bảo hệ điều hành luôn hoạt động ổn định.
Tránh tình trạng hết RAM: Khi hệ thống sử dụng hết RAM, SWAP giúp tránh tình trạng treo máy hoặc mất dữ liệu bằng cách cung cấp không gian bộ nhớ ảo.
Quản lý hiệu quả: Hệ thống sẽ tự động di chuyển dữ liệu ít sử dụng từ RAM sang SWAP, giúp RAM có thêm không gian cho các tác vụ quan trọng hơn.
Hỗ trợ Hibernate (ngủ đông): Hibernate là tính năng giúp lưu trạng thái hiện tại của máy tính vào ổ đĩa và sau đó tắt máy. Để thực hiện được điều này, dữ liệu trong RAM cần được lưu vào khu vực SWAP.
Tăng hiệu suất: Trong một số trường hợp, việc sử dụng SWAP có thể giúp tăng hiệu suất máy tính bằng cách giải phóng RAM cho các ứng dụng và tác vụ cần nhiều bộ nhớ hơn.
Chi phí thấp: So với việc nâng cấp RAM, việc cấu hình và sử dụng SWAP trên ổ đĩa cứng là một giải pháp tiết kiệm chi phí, đặc biệt khi chỉ cần giải quyết tình trạng tạm thời hết RAM.
Nên để kích thước SWAP là bao nhiêu?
- Nếu RAM ≤ 1GB: SWAP nên bằng RAM và tối đa gấp đôi, tuỳ vào dung lượng ổ đĩa.
- Nếu RAM > 1GB:
- Sử dụng chế độ ngủ đông: SWAP = RAM
- Không sử dụng chế độ ngủ đông: SWAP tối thiểu được tính bằng phương pháp lấy căn bậc hai của dung lượng RAM. Ví dụ, nếu bạn có 4GB RAM, căn bậc hai của 4 là 2. Vậy bạn nên cài đặt SWAP tối thiểu là 2GB. SWAP tối đa thông thường là gấp đôi dung lượng RAM. Nếu bạn có 4GB RAM, SWAP tối đa nên là 8GB.
Lưu ý là tốc độ xử lý của SWAP chậm hơn RAM rất nhiều. 1 giây trên RAM bằng hơn 1 phút với SSD, và hơn 15 phút nếu là HDD.
Nếu VPS, Server, máy của bạn sử dụng nhiều SWAP thì đó là dấu hiệu bạn nên nâng cấp thêm RAM.
Cách thêm bộ nhớ SWAP trên hệ điều hành Ubuntu
Bộ nhớ SWAP giúp tăng hiệu suất cho máy tính, đặc biệt khi RAM bị sử dụng hết. Dưới đây là hướng dẫn chi tiết để thêm bộ nhớ SWAP cho hệ điều hành Ubuntu.
Kiểm tra SWAP hiện tại của hệ thống
Câu lệnh sau dùng để kiểm tra xem hệ kích thước SWAP đang sử dụng
1
free -h
1
2
3
total used free shared buff/cache available
Mem: 7.6Gi 3.9Gi 155Mi 1.0Mi 3.6Gi 3.4Gi
Swap: 0B 0B 0B
Kết quả cho thấy hiện tại SWAP đang là 0.
Tạo SWAP file
Câu lệnh dưới đây sẽ tạo SWAP file có dung lượng là 8GB, bạn có thể thay đổi theo ý muốn.
1
sudo dd if=/dev/zero of=/swapfile bs=1G count=8 status=progress
Kết quả
1
2
3
4
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 60 s, 142 MB/s
8+0 records in
8+0 records out
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 60.4002 s, 142 MB/s
Thiết lập quyền truy cập cho SWAP file vừa tạo
1
sudo chmod 600 /swapfile
Kích hoạt SWAP
1
sudo mkswap /swapfile && sudo swapon /swapfile
Kết quả
1
2
Setting up swapspace version 1, size = 8 GiB (8589930496 bytes)
no label, UUID=fcbc3b42-c2ed-4f85-b67f-f3df55e8dbfb
Kiểm tra SWAP hoạt động
Sử dụng lệnh free -h
một lần nữa để đảm bảo rằng bộ nhớ SWAP đã được thêm vào và kích hoạt thành công.
1
free -h
Kết quả
1
2
3
total used free shared buff/cache available
Mem: 7.6Gi 4.0Gi 898Mi 1.0Mi 2.8Gi 3.4Gi
Swap: 8.0Gi 0B 8.0Gi
Cài đặt cho SWAP tự động kích hoạt khi khởi động
Khi khởi động lại hệ điều hành thì SWAP sẽ bị xóa, do đó để đảm bảo SWAP luôn được kích hoạt khi khởi động, ta phải chỉnh sửa file /etc/fstab
, có thể bằng câu lệnh như sau:
1
sudo vi /etc/fstab
1
/swapfile swap swap defaults 0 0 # Thêm dòng này
Tối ưu hóa sử dụng SWAP trên Ubuntu
Để tận dụng tối đa SWAP, bạn cần tùy chỉnh một số tham số quan trọng.
Sửa file /etc/sysctl.conf
, có thể bằng câu lệnh như sau:
1
sudo vi /etc/sysctl.conf
1
2
3
vm.swappiness = 10
vm.vfs_cache_pressure = 50
Sau đó khởi động lại hệ điều hành.
swappiness là gì?
Kiểm tra swappiness
bằng câu lệnh sau:
1
cat /proc/sys/vm/swappiness
Tham số swappiness
quyết định mức độ mà hệ thống sẽ chuyển dữ liệu từ RAM sang bộ nhớ SWAP. Giá trị này nằm trong khoảng từ 0 đến 100, với giá trị mặc định là 30.
- Swappiness = 0: hệ thống sẽ tránh sử dụng SWAP hết mức có thể.
- Swappiness = 100: hệ thống sẽ ưu tiên sử dụng SWAP, giữ cho RAM luôn có không gian trống.
- Swappiness = 10: hệ thống chỉ bắt đầu sử dụng SWAP khi RAM còn khoảng 10% dung lượng trống.
Gợi ý: Do SWAP chậm hơn RAM nhiều, để tăng hiệu suất máy tính, bạn nên giới hạn việc sử dụng SWAP. Một giá trị Swappiness khuyến nghị là 10.
vfs_cache_pressure là gì?
Kiểm tra vfs_cache_pressure
bằng câu lệnh sau:
1
cat /proc/sys/vm/vfs_cache_pressure
Tham số vfs_cache_pressure
kiểm soát cách hệ thống lưu trữ và làm mới siêu dữ liệu của hệ thống tệp (filesystem metadata). Việc truy cập liên tục vào nó có thể làm chậm hệ thống.
Giá trị mặc định được đặt ở mức 100, có nghĩa là nó sẽ bị xóa đi nhanh chóng. Do đó để lưu trữ được lâu hơn thì bạn nên để giá trị này là 50.
Kết luận
SWAP rất quan trọng, như là một phần dự phòng của RAM, nhưng cũng là con dao 2 lưỡi khi tốc độ truy xuất dữ liệu rất chậm, do đó tốt nhất là không nên sử dụng HDD làm SWAP. Trường hợp bạn cần sử dụng SWAP trong khi ổ cứng là HDD thì hãy cài đặt SWAP ở mức thấp để đảm bảo hệ thống được hoạt động ổn định.
Việc hiểu rõ và tối ưu hóa bộ nhớ SWAP trên hệ điều hành Ubuntu không chỉ giúp tăng hiệu suất máy tính mà còn giúp máy hoạt động mượt mà hơn trong các tình huống RAM gặp giới hạn.