Tìm hiểu về hoán đổi không gian bộ nhớ Linux
Ngu
ồn : quantrimang.com
Khi máy tính cần chạy các chương trình lớn hơn bộ nhớ vật lý sẵn có, hầu
hết các hệ điều hành ngày nay sử dụng công nghệ hoán đổi. Đây là công
nghệ mà trong đó một phần bộ nhớ tạm thời được lưu trữ trên ổ cứng
trong khi các dữ liệu khác được di chuyển vào trong các không gian nhớ
vật lý. Dưới đây là một số kỹ thuật giúp bạ
n quản lý tốt hơn sự hoán đổi
trên các hệ thống Linux và có được khả năng thực thi tốt nhất cho các
hoán đổi hệ thống con.
Linux phân chia bộ nhớ truy cập ngẫu nhiên (RAM) thành các ngăn nhớ gọi là
các trang. Hoán đổi là quá trình ở đó một trang nhớ được sao chép tới không
gian được cấu hình trước trên ổ cứng (không gian hoán đổi) nhằm giải phóng
trang nhớ đó. Kích thước được kết hợp từ bộ nh
ớ vật lý và không gian hoán đổi
là tổng dung lượng bộ nhớ ảo.
Có 2 lý do quan trọng mà cần phải thực hiện việc hoán đổi. Trước tiên khi hệ
thống yêu cầu bộ nhớ lớn hơn bộ nhớ vật lý hiện tại đang có thì nhân hệ thống
sẽ được chuyển sang các trang được sử dụng ít hơn và nhường bộ nhớ cho các
ứng dụng đang cần xử lý ngay. Thứ hai, số l
ượng các trang quan trọng được sử
dụng bởi một ứng dụng trong suốt giai đoạn khởi động có thể chỉ được dùng để
khởi tạo rồi sau đó không dùng lại nữa. Hệ thống có thể chuyển đổi giữa các
trang này và giải phóng bộ nhớ cho các ứng dụng khác hay thậm chí cho cả
cache lưu trữ ổ.
Tuy nhiên việc hoán đổi cũng không phải hoàn toàn tốt. So với bộ nhớ, các
ổ
chạy rất chậm. Tốc độ bộ nhớ có thể được đo bằng nano giây (ns) trong khi tốc
độ ổ đo bằng mili giây (ms), do đó truy cập ổ chậm hơn hàng chục nghìn lần truy
cập vào bộ nhớ vật lý. Càng thực hiện hoán đổi nhiều thì hệ thống sẽ càng
chậm. Đôi khi hoán đổi quá mức hoặc nhiều lần liên tiếp sẽ xảy ra ở một trang
được chuyển ra r
ồi ngay lập tức lại được chuyển vào rồi lại chuyển ra rồi cứ thế
tiếp tục. Trong mỗi trường hợp thì hệ thống sẽ tìm ra các vùng nhớ trống và
cùng lúc đưa vào chạy ứng dụng. Trường hợp này chỉ cần thêm RAM.
Linux có hai loại không gian hoán đổi: partition hoán đổi và tập tin hoán đổi.
Partition hoán đổi là một phần độc lập của ổ cứng được sử dụng chỉ để hoán
đổ
i; không một tập tin nào khác được lưu trữ ở đây. Tập tin hoán đổi là một tập
tin đặc biệt trong tập tin hệ thống có khả năng lưu trữ ở mọi nơi trong hệ thống
và các tập tin dữ liệu.
Để biết được dung lượng không gian hoán đổi mà bạn có, sử dụng lệnh swapon
-s. Bạn sẽ thu được kết quả như sau:
Filename Type Size Used Priority
/dev/sda5 partition 859436 0 -1
Mỗi dòng liệt kê một không gian hoán đổi riêng được sử dụng bởi hệ thống. Ở
đây, trường ‘Type’ chỉ ra rằng không gian hoán đổi này là partition chứ không
phải file, và tại trường ‘Filename’ ta thấy rằng hoán đổi xảy ra ở ổ đĩa sda5.
‘Size’ hiển thị dạng kilo byte và trường ‘Used’ cho biết số lượng kilo byte không
gian hoán đổi đã sử dụng (trường hợp này là 0). ‘Priority’ cho Linux bi
ết không
gian hoán đổi nào được dùng đầu tiên. Một điều tiện lợi khi Linux hoán đổi hệ
thống con là nếu bạn có hai hay nhiều không gian hoán đổi (trên 2 thiết bị khác
nhau) với cùng một độ ưu tiên, thì Linux sẽ xen kẽ hoán chuyển các hoạt động
giữa chúng, do đó có thể năng tốc độ thực thi.
Để thêm các partition hoán đổi vào hệ thống trước hết bạn cần phải chuẩn bị.
Bước 1 đảm bảo partition
đó được đánh dấu như là partition hoán đổi và bước
tiếp theo là tạo các hoán đổi tập tin hệ thống. Để kiểm tra các partition đã được
đánh dấu chưa bạn chạy lệnh:
fdisk -l /dev/hdb
Thay thế /dev/hdb bằng thiết bị của ổ cứng trên hệ thống của bạn với partition
hoán đổi trên nó. Kết quả như sau:
Device Boot Start End Blocks Id System
/dev/hdb1 2328 2434 859446 82 Linux swap
/ Solaris
Nếu partition chưa được đánh dấu thì bạn cầ
n phải sửa lại nó bằng cách chạy
fdisk và dùng tùy chọn ‘t’. Hãy cẩn thận khi làm việc với các các partition. Bạn
không muốn xóa đi những partition quan trọng bởi bị lỗi hay thay đổi id của
partition khi hệ thống mắc lỗi trong việc hoán đổi. Tất cả dữ liệu trên một partition
hoán đổi sẽ bị mất do đó hãy kiểm tra lại thay đổi bạn tạo ra. Đồng thời cũng chú
ý rằng Solaris sử dụng cùng ID giố
ng không gian hoán đổi Linux cho cùng các
partition, phải cẩn thận để không xóa các partition Solaris đó.
Ngay khi partition được đánh dấu hoán đổi, bạn hãy dùng lệnh mkswap (make
swap) như sau:
mkswap /dev/hdb1
Nếu không có lỗi xảy ra thì hoán đổi của bạn đã sẵn sàng được sử dụng. Để
kích hoạt hãy nhập:
swapon /dev/hdb1
Bạn có thể kiểm tra bằng lệnh swapon -s. Để cài đặt không gian hoán đổi tự
động khi khởi động bạn cần thêm một entry cho /etc/fstab file, nơi chứa một
danh sách các tập tin hệ thống và các không gian hoán đổi cần cài đặt tại thời
gian khởi động. Mỗi dòng có định dạng sau:
<file system> <mount point> <type> <options>
<dump> <pass>
Khi không gian hoán đổi là một loại đặc biệt của tập tin hệ thống thì rất nhiều các
tham số không tương thích. Đối với không gian hệ thống, hãy thêm:
/dev/hdb1 none swap sw 0 0
Trong đó dev/hdb là một ngăn hoán đổi. Ngăn này không có điểm lắp đặt cố
định, do đó ta có none. Loại hoán đổi với tùy chọn sw và hai tham số cuối cùng
không được sử dụng nên chúng có giá trị là 0. Để kiểm tra xem không gián hoán
đổi đã được tự động cài đặt mà không c
ần phải khởi động lại thì bạn có thể dùng
lệnh swapoff -a (tắt các không gian hoán đổi) rồi sau đó dùng lệnh swapon -
a (cài đặt tất cả mọi không gian hoán đổi liệt kê tại tập tin /etc/fstab) rồi kiểm tra
lại bằng lệnh swapon –s
Tập tin hóan đổi
Cũng giống như partition hoán đổi, Linux hỗ trợ cho bạn tạo được một tập tin
hoán đổi, chuẩn bị và lắp đặ
t cùng kiểu với partition hoán đổi. Lợi ích của các tập
tin hoán đổi đó là bạn không cần phải tìm kiếm một partition trống hay phân chia
lại ổ để thêm vào các không gian hoán đổi.
Để tạo một tập tin hoán đổi, trước tiên hãy dùng lệnh dd để tạo một tập tin trống.
Ví dụ tạo một tập tin 1GB, nhập:
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
/swapfile là tên của tập tin hoánđổi và 1048576 là kích cỡ tính bằng kilo byte (ví
dụ 1GB).
Chuẩn bị tập tin hoán đổi b
ạn dùng mkswap như khi tạo một partition, nhưng ở
đây dùng tên của tập tin hoán đổi:
mkswap /swapfile
và tương tự, cài đặt tập tin hoán đổi dùng lệnh swapon: swapon /swapfile.
Đầu vào /etc/fstab của một tập tin hoán đổi có dạng như sau:
/swapfile none swap sw 0 0
Cần phải có bao nhiêu không gian hoán đổi?
Có thể chạy hệ thống Linux mà không cần một không gian hoán đổi và hệ thống
sẽ hoạt động tối nếu như ta có một bộ nhớ khổng lồ—Nhưng nếu máy tính chạy
tràn bộ nhớ vật lý thì hệ thống s
ẽ bị phá hủy và không có khả năng làm gì khác,
do đó bạn nên có một không gian hoán đổi nhất là từ khi không gian đĩa đang
ngày càng rẻ hơn.
Câu hỏi được quan tâm nhiều nhất đó là giá thành bao nhiêu? Các phiên bản hệ
điều hành Unix cũ hơn (ví dụ như Sun OS và Ultrix) yêu cầu một không gian
hoán đổi gấp 2 hay 3 lần không gian bộ nhớ vật lý. Các hệ điều hành ngày nay
(ví dụ như Linux) không yêu cầu nhiều không gian hoán đổi nhưng không gian
này có thể được s
ử dụng khi bạn cấu hình máy. Quy luật như sau: 1) đối với hệ
thống máy để bàn, sử dụng không gian hoán đổi của hai bộ nhớ hệ thống, khi đó
bạn có thể chạy nhiều ứng dụng (nhiều trong số đó có thể sẽ bị tạm ngừng và dễ
bị hoán đổi), bạn cũng có thêm dung lượng RAM cho các ứng dụng đang hoạt
động. 2) Đối với máy chủ, có lượng hoán
đổi ít hơn (một nửa của bộ nhớ vật lý)
do đó bạn dễ dàng hoán đổi khi cần nhưng hạn chế số lượng không gian hoán
đổi được sử dụng và nâng cấp cho RAM khi cần. 3) Đối với các máy để bạn cũ
hơn (chỉ với 128MB), hãy dùng càng nhiều không gian hoán đổi càng tốt, thậm
chí có thể lên tới 1GB.
Linux 2.6 kernel có thêm các tham số chủ đạo được gọi là swappiness cho phép
các quản trị viên đặt các phươ
ng pháp hoán đổi Linux. Đó là các số từ 0 đến
100. Các giá trị càng cao thì càng nhiều trang đuợc hoán đổi, và các giá trị càng
thấp thì càng nhiều ứng dụng được giữ lại trong bộ nhớ thậm chí là bị tạm
ngừng. Andrew Morton cho biết ông đã chạy các máy để bàn với mức hoán đổi
là 100.
Một cách nghĩ khác cho ý kiến của Morton đó là nếu bộ nhớ được hoán đổi quá
nhanh thì thời gian khôi phục ứng dụng sẽ yế
u đi bởi vì khi cửa sổ ứng dụng
được kích thì hệ thống sẽ chuyển ứng dụng quay trở về bộ nhớ, điều này sẽ mất
rất nhiều thời gian.
Giá trị mặc định của swappiness là 60. Bạn có thể thay đổi chúng tùy ý bằng
cách nhập:
echo 50 > /proc/sys/vm/swappiness
Kết luận
Quản lý không gian hoán đổi là nhiệm vụ chủ chốt của quản trị viên hệ thống.
Với kế hoạch tốt và sử dụng hợp lý thì hoán đổi có thể cung cấp tới bạn nhiều lợi
ích. Đừng lo ngại về kinh nghiệm và luôn luôn kiểm tra hệ thống để chắc chắc
rằng bạn đang đạt được những kết quả nh
ư mong muốn.