Hướng dẫn dọn dẹp cache, buffer và swap memory trong Linux

dọn dẹp bộ nhớ cache của linux

Tương tự như các hệ điều hành khác, Linux cũng thực hiện một cơ chế quản lý bộ nhớ khá hiệu quả và thậm chí hơn thế nữa. Nhưng nếu có bất kỳ tiến trình nào đang sử dụng quá nhiều bộ nhớ và bạn muốn dọn dẹp nó, Linux sẽ cung cấp cho bạn một cách khá hiệu quả để dọn dẹp bộ nhớ đệm ram.

Hướng dẫn dọn dẹp bộ nhớ đệm RAM

Đối với mọi bản phân phối Linux, có 3 cơ chế làm sạch bộ nhớ cache không gây ra bất kỳ sự gián đoạn nào về quy trình hoặc dịch vụ.

1. Chỉ cần dọn dẹp PageCache

sync; echo 1 > /proc/sys/vm/drop_caches

2. Chỉ làm sạch răng giả và inodes

sync; echo 2 > /proc/sys/vm/drop_caches

3. Dọn dẹp cả PageCache, Dentries và Inodes

sync; echo 3 > /proc/sys/vm/drop_caches 

Và ở đây tôi sẽ giải thích các lệnh trên

đồng bộ hóa: là lệnh sẽ xóa hệ thống File đệm. Các câu lệnh được phân tách bằng ký tự “;“Để chạy tuần tự. Trình bao sẽ đợi lệnh này kết thúc trước khi thực hiện lệnh tiếp theo một cách tuần tự. Như được hiển thị trong tài liệu hạt nhân, việc ghi vào drop_cache sẽ làm sạch bộ nhớ cache mà không giết bất kỳ ứng dụng dịch vụ hoặc quy trình nào. Vì vậy, hãy sử dụng lệnh echo để thực hiện ghi File.

Nếu bạn phải xóa bộ nhớ cache trên đĩa, lệnh đầu tiên là an toàn nhất trong các hệ thống sản phẩm doanh nghiệp, bởi vì “echo 1>“Sẽ chỉ dọn dẹp PageCache. Và tôi không khuyến khích bạn chạy các lệnh tiếng vọng 2 tốt tiếng vang 3 nếu bạn vẫn chưa hiểu tác dụng của nó là gì. Bởi vì giống như lệnh echo 3, nó làm sạch Pageche, Dentries và Inodes.

>>> Xem thêm:  Tác dụng của BIOS là gì và khi nào chúng ta...

Vì vậy, tôi có nên giải phóng Bộ nhớ đệm và Bộ đệm được sử dụng bởi Nhân Linux không?

Khi bạn cố gắng áp dụng các cài đặt khác nhau và muốn kiểm tra hệ thống của mình để sử dụng tài nguyên, đã đến lúc xóa bộ đệm đệm. Bạn có thể xóa bộ nhớ cache như tôi đã giải thích ở trên mà không cần phải khởi động lại – nghĩa là không có thời gian chết.

Linux được thiết kế theo cách hoàn hảo, trong đó đầu tiên nó kiểm tra bộ nhớ cache của đĩa trước, sau đó mới xem xét đĩa. Nếu nó nhận thấy rằng có tài nguyên trong bộ nhớ cache, nó sẽ không chạm vào đĩa. Nếu chúng ta xóa bộ nhớ cache, bộ nhớ cache trên đĩa sẽ ít hữu ích hơn – vì Hệ điều hành sẽ tìm kiếm tài nguyên trên đĩa.

Bây giờ, tôi sẽ viết một script tự động dọn dẹp bộ nhớ cache hàng ngày vào buổi sáng lúc 9 giờ sáng. Tạo một tập lệnh với tên File delete_cahe và thêm các dòng sau vào File:

#!/bin/bash
use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

Cấp quyền thực thi cho File này bằng cách chạy lệnh sau

chmod +x delete_cache

Bây giờ, tôi có thể dọn dẹp bộ nhớ cache RAM bất cứ lúc nào tôi muốn bằng cách chạy tập lệnh trên.

Để thiết lập lịch cronjob dọn dẹp bộ nhớ đệm RAM vào 9h sáng hàng ngày. Mở File crontab để chỉnh sửa:

crontab -e

Thêm dòng sau vào cuối File và sau đó lưu nó

0  9  *  *  *  /opt/delete_cache

Trong đó: / opt / delete_cache là đường dẫn đến File script

>>> Xem thêm:  Hướng dẫn tăng số Inode ổ đĩa trong Linux

Đây có phải là một ý tưởng hay để làm sạch bộ nhớ cache RAM trên các máy chủ sản xuất?

Chắc chắn không phải! Giả sử trong trường hợp bạn lên lịch chạy tập lệnh bộ nhớ cache ram sạch mỗi ngày vào lúc 9 giờ sáng. Giả sử một ngày đẹp trời, một số lượng lớn người dùng truy cập trang web của bạn và truy cập bằng cách sử dụng tài nguyên từ máy chủ của bạn.

Đồng thời script làm sạch bộ nhớ đệm RAM và xóa mọi thứ trong RAM. Tại thời điểm này, tất cả dữ liệu được sử dụng bởi người dùng phải được tải từ đĩa. Sẽ dẫn đến sự cố hoặc kết quả cơ sở dữ liệu bị gián đoạn. Do đó, hãy cân nhắc thời điểm nên dọn dẹp bộ nhớ đệm RAM trước khi thực hiện là thích hợp nhất.

Cách làm sạch không gian hoán đổi trên Linux

Nếu bạn muốn dọn dẹp Swap Space, có thể bạn sẽ phải sử dụng lệnh sau:

swapoff -a && swapon -a

Bạn cũng có thể chèn lệnh trên vào script để chạy – chỉ sau khi bạn đã hiểu các rủi ro liên quan.

Bây giờ, tôi sẽ kết hợp các lệnh trên thành một để làm sạch bộ nhớ cache RAM và Swap Space.

echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf 'n%sn' 'Ram-cache and Swap Cleared'

Hoặc là

$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf 'n%sn' 'Ram-cache and Swap Cleared'" root

Sau khi thực hiện lệnh trên, tôi sẽ chạy lệnh “miễn phí -h“Trước khi chạy script để kiểm tra xem script có chạy như mong đợi hay không.

>>> Xem thêm:  Control Groups (cgroups) trong Linux là gì?

Xem thêm nhiều bài khác tại : https://exel.tailieu247.edu.vn/he-dieu-hanh