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

How Clear Cache Linux



Bộ đệm ẩn của hệ thống tệp linux (Bộ đệm 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, chúng tôi sẽ giải thích cách hoạt động của bộ đệm ẩn Hệ thống tệp Linux. Sau đó, chúng tôi 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 tôi 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.

Cách hoạt động của bộ nhớ đệm hệ thống tệp Linux

Kernel dự trữ một lượng bộ nhớ hệ thống nhất định để lưu vào bộ nhớ đệm các truy cập đĩa hệ thống tệp nhằm làm cho hiệu suất tổng thể nhanh hơn. Bộ nhớ đệm trong linux được gọi là Trang bộ nhớ đệm . Kích thước của bộ đệm trang có thể được định 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ộ đệm số lượng lớn các khối đĩa. Kích thước tối đa của bộ đệm và các chính sách về thời điểm xóa dữ liệu khỏi bộ đệm có thể điều chỉnh bằng các tham số hạt nhân. Cách tiếp cận bộ nhớ cache linux được gọi là bộ nhớ 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ộ đệm và được đánh dấu là bẩn trong bộ đệm 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ộ đệm khi cần thêm dung lượng trong bộ đệm.







Trong các cuộc gọi hệ thống đọc Linux, hạt nhân 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ộ đệm 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ộ đệm 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 chính sách bộ nhớ đệm 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ớ đệm. Những điều này có thể ảnh hưởng đến hiệu suất của các ứng dụng chuyên sâu về 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.



Sử dụng lệnh Miễn phí để xem Sử dụng bộ nhớ cache

Chúng ta có thể sử dụng lệnh miễn phí 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ớ đệm. Xem lệnh bên dưới:





#miễn phí -NS

Những gì chúng ta thấy từ miễn phí lệnh 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 miễn phí. 667 MB được sử dụng trong bộ đệm đệm. Bây giờ, hãy thử tăng con số đó bằng cách chạy lệnh để tạo tệp 1 Gigabyte và đọc tệp. 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 lại với nhau thành một big_file .



# dd if = / dev / random of = / root / data_file count = 1400000
# cho tôi trong `seq 1 10`; làm echo $ i; cat data_file >> large_file; xong

Bây giờ chúng tôi sẽ đảm bảo đọc tệp 1 Gig này và sau đó kiểm tra lại lệnh miễn phí:

# cat large_file> / dev / null
# rảnh -m

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

Lệnh thả Proc Sys VM Drop Caches

Nhân linux cung cấp một giao diện để xóa bộ nhớ cache, chúng ta hãy thử các lệnh này và xem tác động của cài đặt miễn phí.

# echo 1> / proc / sys / vm / drop_caches
# rảnh -m

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

Xác minh thử nghiệm làm thả bộ nhớ đệm hoạt động

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

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

Bùm! Chỉ mất 0,2 giây so với 8,4 giây để đọc khi tệp không được lưu vào bộ nhớ đệm. Để 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, sau đó đọc tệp 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.

Phần kết luận

Bộ đệm 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ộ đệm. Nếu bạn muốn xóa bộ nhớ đệm 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 / proc chỉ thị cho hạt nhân để xóa bộ đệm và giải phóng bộ nhớ được sử dụng cho bộ đệm. 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ộ nhớ cache trước và sau khi xả cũng được hiển thị.