Cách xóa bộ nhớ cache trên Linux

Tác giả Network Engineer, T.Một 16, 2022, 12:19:10 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách xóa bộ nhớ cache trên Linux


Bộ nhớ Cache ẩn của hệ thống tập tin linux (Bộ Cache trang) được sử dụng để làm cho các hoạt động IO nhanh hơn. Trong một số trường hợp nhất định, quản trị viên hoặc nhà phát triển có thể muốn xóa bộ nhớ cache theo cách thủ công. Trong bài viết này, mình sẽ giải thích cách thức hoạt động của bộ Cache ẩn Hệ thống tập tin Linux. Sau đó, mình sẽ trình bày cách theo dõi việc sử dụng bộ nhớ cache và cách xóa bộ nhớ cache. Chúng ta sẽ thực hiện một số thử nghiệm hiệu suất đơn giản để xác minh bộ nhớ cache đang hoạt động như mong đợi và quy trình xóa và xóa bộ nhớ cache cũng hoạt động như mong đợi.

1. Cách hoạt động của bộ Cache hệ thống tập tin Linux

Kernel dự trữ một lượng bộ nhớ hệ thống nhất định để lưu vào bộ Cache các truy cập đĩa hệ thống tập tin nhằm làm cho hiệu suất tổng thể nhanh hơn. Bộ nhớ Cache trong linux được gọi là Bộ Cache trang. Kích thước của bộ Cache ẩn trang có thể được cấu hình với các giá trị mặc định rộng rãi được kích hoạt để lưu vào bộ Cache số lượng lớn các khối đĩa. Kích thước tối đa của bộ Cache và các chính sách về thời điểm xóa dữ liệu khỏi bộ Cache có thể điều chỉnh được bằng các tham số Kernel. Cách tiếp cận bộ Cache linux được gọi là bộ Cache ghi lại. Điều này có nghĩa là nếu dữ liệu được ghi vào đĩa, nó sẽ được ghi vào bộ nhớ vào bộ Cache và được đánh dấu là bẩn trong bộ Cache cho đến khi nó được đồng bộ hóa vào đĩa. Kernel duy trì các cấu trúc dữ liệu bên trong để tối ưu hóa dữ liệu nào cần loại bỏ khỏi bộ Cache khi cần thêm dung lượng trong bộ Cache.

Trong các cuộc gọi hệ thống đọc Linux, Kernel sẽ kiểm tra xem dữ liệu được yêu cầu có được lưu trữ trong các khối dữ liệu trong bộ Cache hay không, đó sẽ là một lần truy cập bộ nhớ cache thành công và dữ liệu sẽ được trả lại từ bộ Cache mà không cần thực hiện bất kỳ IO nào đối với hệ thống đĩa. Đối với một bộ nhớ cache bỏ lỡ, dữ liệu sẽ được tìm nạp từ hệ thống IO và bộ nhớ cache được cập nhật dựa trên các chính sách bộ nhớ Cache vì dữ liệu tương tự này có khả năng được yêu cầu lại.

Khi đạt đến ngưỡng sử dụng bộ nhớ nhất định, các tác vụ nền sẽ bắt đầu ghi dữ liệu bẩn vào đĩa để đảm bảo nó đang xóa bộ nhớ Cache. Những điều này có thể có tác động đến hiệu suất của các ứng dụng sử dụng nhiều bộ nhớ và CPU và yêu cầu quản trị viên và hoặc nhà phát triển phải điều chỉnh.

2. Sử dụng lệnh free để xem sử dụng bộ nhớ cache

Chúng ta có thể sử dụng lệnh free từ dòng lệnh để phân tích bộ nhớ hệ thống và lượng bộ nhớ được cấp cho bộ nhớ Cache. Xem lệnh bên dưới:

Mã nguồn [Chọn]
# free -m

Những gì chúng ta thấy từ lệnh free ở trên là có 7,5 GB RAM trên hệ thống này. Trong số này chỉ có 209 MB được sử dụng và 6,5 MB free. 667 MB được sử dụng trong bộ Cache Cache. Bây giờ chúng ta hãy thử tăng con số đó bằng cách chạy lệnh tạo tập tin 1 Gigabyte và đọc tập tin. Lệnh dưới đây sẽ tạo khoảng 100MB dữ liệu ngẫu nhiên và sau đó nối 10 bản sao của tập tin lại với nhau thành một tập tin tin lớn.

Mã nguồn [Chọn]
# dd if=/dev/random of=/root/data_file count=1400000
Mã nguồn [Chọn]
# for i in `seq 1 10`; do echo $i; cat data_file >> large_file; done

Bây giờ chúng ta sẽ đảm bảo đọc tập tin 1 Gig này và sau đó kiểm tra lại lệnh free:

Mã nguồn [Chọn]
# cat large_file > /dev/null
Mã nguồn [Chọn]
# free -m

Chúng ta có thể thấy việc sử dụng bộ Cache Cache đã tăng từ 667 lên 1735 Megabyte, tăng khoảng 1 Gigabyte trong việc sử dụng bộ Cache Cache.

3. Lệnh Proc Sys VM Drop Caches

Kernel linux cung cấp một giao diện để xóa bộ nhớ cache, hãy thử các lệnh này và xem tác động của cài đặt free.

Mã nguồn [Chọn]
# echo 1 > /proc/sys/vm/drop_caches
Mã nguồn [Chọn]
# free -m

Chúng ta có thể thấy ở trên rằng phần lớn phân bổ bộ Cache Cache đã được giải phóng bằng lệnh này.

4. Xác minh thử nghiệm xem lệnh Drop Caches chạy thế nào.

Chúng ta có thể thực hiện xác nhận hiệu suất bằng cách sử dụng bộ nhớ cache để đọc tập tin không? Hãy đọc tập tin và ghi nó trở lại /dev/null để kiểm tra xem mất bao lâu để đọc tập tin từ đĩa. mình sẽ xác định thời gian bằng lệnh thời gian. Chúng ta thực hiện lệnh này ngay sau khi xóa bộ nhớ Cache bằng các lệnh trên.


Phải mất 8,4 giây để đọc tập tin. Bây giờ chúng ta hãy đọc lại để biết rằng tập tin sẽ nằm trong bộ nhớ cache của hệ thống tập tin và xem nó mất bao lâu.


Chỉ mất 0,2 giây so với 8,4 giây để đọc khi tập tin không được lưu vào bộ nhớ Cache. Để xác minh, hãy lặp lại điều này một lần nữa bằng cách xóa bộ nhớ cache và sau đó đọc tập tin 2 lần.


Nó hoạt động hoàn hảo như mong đợi. 8,5 giây cho lần đọc không được lưu trong bộ nhớ cache và 0,2 giây cho lần đọc được lưu trong bộ nhớ cache.

Bộ Cache trang được bật tự động trên các hệ thống Linux và sẽ làm cho IO nhanh hơn một cách rõ ràng bằng cách lưu trữ dữ liệu được sử dụng gần đây trong bộ Cache. Nếu bạn muốn xóa bộ nhớ Cache theo cách thủ công, có thể thực hiện dễ dàng bằng cách gửi lệnh echo đến hệ thống tập tin /proc chỉ thị cho Kernel để xóa bộ Cache và giải phóng bộ nhớ được sử dụng cho bộ Cache. Hướng dẫn chạy lệnh đã được hiển thị ở trên trong bài viết này và xác thực thử nghiệm hành vi bộ Cache trước và sau khi xóa Cache cũng được hiển thị.