Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn cách xóa bộ nhớ cache, buffer và swap trong Linux nhanh chóng, chi tiết

    Nguyễn Hưng

    Ngày đăng:

    27/02/2026

    Cập nhật lần cuối:

    27/02/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    27/02/2026

    Cập nhật lần cuối:

    27/02/2026

    Mục lục

    Trong Linux, bộ nhớ cache là nơi lưu trữ tạm thời dữ liệu và các file đã truy cập gần đây để giảm thời gian truy xuất ở lần tiếp theo. Tuy nhiên, theo thời gian, bộ nhớ cache có thể chiếm dụng quá nhiều RAM, đặc biệt trên các máy chủ có uptime dài hoặc hệ thống cần tối ưu tài nguyên thường xuyên. Trong bài viết này, mình sẽ hướng dẫn bạn cách xóa bộ nhớ cache trên Linux nhanh chóng và chi tiết, giúp tối ưu bộ nhớ hiệu quả.

    Những điểm chính

    • Khái niệm bộ nhớ: Phân biệt rõ vai trò của Cache, Buffer và Swap để hiểu đúng cơ chế vận hành và quản lý tài nguyên của nhân Linux.
    • Thời điểm can thiệp: Biết chính xác khi nào nên và không nên xóa cache để đảm bảo hệ thống không bị thắt cổ chai I/O hoặc quá tải CPU.
    • Kiểm tra tình trạng: Nắm vững cách sử dụng lệnh free -hvmstat để nhận diện lượng RAM thực tế có sẵn và các tiến trình đang chiếm dụng bộ nhớ.
    • Phương pháp dọn dẹp: Thành thạo 6 kỹ thuật xóa PageCache, dentries, inodes và dọn dẹp Swap để giải phóng không gian bộ nhớ tạm thời khi cần thiết.
    • Lưu ý an toàn: Ghi nhớ các quy tắc bắt buộc như thực hiện lệnh sync trước khi xóa để bảo vệ toàn vẹn dữ liệu và tránh rủi ro hỏng hệ thống tệp.
    • Giải pháp tối ưu dài hạn: Biết cách điều chỉnh tham số Swappiness và giới hạn RAM ứng dụng để hệ thống tự động cân bằng tài nguyên hiệu quả hơn.
    • Giải đáp thắc mắc: Trả lời các câu hỏi về ảnh hưởng của việc dọn cache đến ứng dụng và vai trò quan trọng của lệnh sync trong quản trị.

    Tìm hiểu về bộ nhớ Cache, bộ đệm và Swap trong Linux

    RAM Memory Cache là gì?

    RAM Memory Cache là cơ chế được hạt nhân sử dụng để lưu trữ nội dung của các tập tin đã được đọc từ đĩa cứng. Khi người dùng hoặc ứng dụng yêu cầu truy xuất lại các tập tin này, hệ thống sẽ đọc trực tiếp từ RAM thay vì ổ cứng, giúp tăng tốc độ phản hồi lên gấp nhiều lần. Khi bộ nhớ RAM vật lý cần thiết cho các ứng dụng thực tế, Kernel sẽ tự động thu hồi phần bộ nhớ này.

    Bộ đệm (Buffer) là gì?

    Buffer là khu vực lưu trữ dữ liệu metadata của hệ thống tập tin và dữ liệu tạm thời đang chờ được ghi xuống đĩa hoặc truyền giữa các thiết bị. Dữ liệu bộ đệm giúp quá trình giao tiếp giữa các phần cứng diễn ra mượt mà, không bị gián đoạn và đồng bộ hóa tốc độ giữa các thiết bị, giảm độ trễ I/O.

    Swap Space là gì?

    Swap là một phân vùng hoặc một tập tin được phân bổ trên ổ đĩa cứng, hoạt động như bộ nhớ ảo. Khi bộ nhớ RAM vật lý bị cạn kiệt, Kernel sẽ di chuyển các dữ liệu ít được sử dụng từ RAM sang Swap để nhường chỗ cho các tiến trình quan trọng hơn đang chạy. Swap giúp ngăn chặn hệ thống bị treo hoặc sập do lỗi thiếu bộ nhớ. Tuy nhiên, vì tốc độ truy xuất ổ cứng chậm hơn rất nhiều so với RAM, việc lạm dụng Swap quá mức sẽ khiến hệ thống trở nên chậm chạp.

    Bộ nhớ Cache, bộ đệm và Swap trong Linux
    Bộ nhớ Cache, bộ đệm và Swap trong Linux

    Khi nào nên và không nên xóa bộ nhớ Cache?

    Kernel Linux có khả năng tự động quản lý bộ nhớ cực kỳ xuất sắc. Do đó, việc can thiệp thủ công cần được cân nhắc kỹ lưỡng.

    Các trường hợp nên xóa Cache

    Các chuyên gia về hệ thống chỉ khuyên dọn dẹp RAM Cache trong các trường hợp sau:

    • Thực hiện Benchmark: Khi bạn cần đo lường chính xác tốc độ đọc/ghi (I/O) thực tế của ổ cứng mà không bị ảnh hưởng bởi tốc độ của bộ nhớ đệm.
    • Test ứng dụng: Bạn cần kiểm tra xem phần mềm hoạt động như thế nào trong tình trạng “Cold Start” (Khởi động lạnh – không có dữ liệu đệm).
    • Khắc phục sự cố rò rỉ bộ nhớ: Giải phóng bộ nhớ tạm thời khi một ứng dụng hoạt động bất thường chiếm dụng quá nhiều Cache.
    trường hợp xóa bộ nhớ cache trên linux
    Các trường hợp nên xóa Cache

    Trường hợp không nên xóa Cache

    Tuyệt đối không nên xóa Cache thường xuyên trên máy chủ Production. Nguyên lý hoạt động của Cache là giúp hệ thống không phải đọc lại dữ liệu từ ổ đĩa chậm chạp. Khi bạn xóa Cache, tỷ lệ “Cache Miss” (không tìm thấy dữ liệu trong bộ nhớ đệm) sẽ tăng lên 100%. Lúc này, mọi yêu cầu truy xuất dữ liệu đều phải lấy trực tiếp từ ổ cứng, gây ra tình trạng thắt cổ chai I/O, làm quá tải CPU và khiến máy chủ phản hồi cực kỳ chậm chạp.

    Hướng dẫn kiểm tra tình trạng bộ nhớ trước khi xóa

    Bạn nên kiểm tra thông số bộ nhớ trước và sau khi thực hiện để đánh giá mức độ hiệu quả.

    Cách kiểm tra dung lượng RAM trống

    Bạn sử dụng lệnh sau để xem tổng quan bộ nhớ:

    free -h

    iconLưu ý

    Bạn đừng nhìn vào cột Free (bộ nhớ chưa được đụng tới) mà hãy nhìn vào cột Available. Đây mới là lượng RAM thực tế có sẵn cho các ứng dụng mới khởi chạy (bao gồm cả dung lượng Cache có thể giải phóng khi cần).

    Bạn cũng có thể dùng lệnh sau để theo dõi luồng I/O và bộ nhớ theo thời gian thực:

    vmstat 1

    Tìm các tiến trình ngốn nhiều bộ nhớ nhất

    Để xác định chính xác ứng dụng nào đang chiếm dụng RAM, bạn có thể dùng các cách sau:

    • Chạy lệnh ps: ps aux --sort=-%mem | head -n 10 (Hiển thị 10 tiến trình dùng nhiều RAM nhất).
    • Công cụ smem: smem cung cấp báo cáo chính xác hơn về lượng RAM thực tế (USS/PSS) mà tiến trình đang sử dụng.

    iconLưu ý

    Trước khi chạy bất kỳ lệnh xóa Cache nào, bạn bắt buộc phải chạy lệnh sync. Lệnh sync có nhiệm vụ báo cho hệ điều hành đẩy toàn bộ dữ liệu đang chờ trong Buffer ghi an toàn xuống ổ cứng. Nếu bỏ qua bước này, bạn có thể đối mặt với nguy cơ mất dữ liệu hoặc hỏng hệ thống tệp.

    1. Xóa PageCache

    PageCache là khu vực lưu trữ dữ liệu được đọc từ ổ đĩa. Để kiểm tra và xóa PageCache, bạn sử dụng các lệnh sau:

    free -h
    sudo sh -c 'echo 1 > /proc/sys/vm/drop_caches'
    free -h
    Xóa PageCache
    Xóa PageCache

    2. Xóa dentries và inodes

    Dentries và inodes lưu trữ thông tin metadata của các file trên hệ thống. Để dọn dẹp hai thành phần này, bạn thực thi lệnh sau đây:

    free -h
    sudo sh -c 'echo 2 > /proc/sys/vm/drop_caches'
    free -h

    3. Xóa đồng thời PageCache, dentries và inodes

    Nếu muốn xóa cả ba khu vực bộ nhớ PageCache, dentries và inodes một lần, bạn dùng lệnh sau:

    free -h
    sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
    free -h
    Xóa PageCache, dentries và inodes
    Xóa PageCache, dentries và inodes

    4. Xóa bộ nhớ đệm

    Buffer là bộ nhớ tạm phục vụ cho việc chuyển đổi dữ liệu giữa CPU và ổ cứng. Để dọn dẹp buffer, bạn thực hiện lệnh sau:

    free -h
    sudo sync && echo 1 > /proc/sys/vm/drop_caches
    free -h
    Xóa bộ nhớ đệm
    Xóa bộ nhớ đệm

    5. Tạo script dọn dẹp cache định kỳ

    Để tự động dọn dẹp cache, bạn có thể tạo file script như sau:

    nano clear_cache.sh
    echo “echo 3 > /proc/sys/vm/drop_caches”

    Tiếp đến, bạn thêm vào crontab để script chạy tự động theo lịch:

    crontab -e
    0 0 * * * /root/clear_cache.sh

    6. Dọn Swap

    iconLưu ý

    Trước khi chạy lệnh swapoff, bạn BẮT BUỘC phải chạy lệnh free -h và đảm bảo lượng RAM ở cột Available phải lớn hơn lượng Swap ở cột Used. Nếu RAM không đủ chỗ chứa dữ liệu từ Swap dội về, Kernel Linux sẽ kích hoạt OOM Killer, tự động kill các tiến trình quan trọng (như MySQL, Nginx) để cứu hệ thống và dẫn tới sập dịch vụ.

    Để giải phóng swap, bạn hãy tắt và bật lại swap bằng lệnh dưới đây:

    swapoff -a
    swapon -a
    Dọn Swap
    Dọn Swap

    Bạn có thể tích hợp vào script để dọn toàn bộ cache và swap:

    #!/bin/bash
    echo 3 > /proc/sys/vm/drop_caches && \
    swapoff -a && \
    swapon -a && \
    printf '\n%s\n' ‘Ram-cache and the swap got cleared’

    Sau đó, bạn thực thi lệnh sau đây để kiểm tra kết quả:

    ./clear_cache.sh
    free -h
    Kết quả chạy file script
    Kết quả chạy file script

    Lưu ý khi xóa bộ nhớ cache trên Linux

    Dưới đây là các lưu ý khi xóa bộ nhớ cache trên Linux:

    • Đồng bộ dữ liệu trước: Bạn hãy chạy lệnh sync để ghi dữ liệu chờ xuống ổ cứng, tránh lỗi mất dữ liệu.
    • Giảm hiệu suất tạm thời: Server sẽ chạy chậm lại ngay sau khi xóa do CPU và ổ cứng phải tốn tài nguyên để nạp lại dữ liệu.
    • Không giải phóng RAM ứng dụng: Lệnh này chỉ xóa vùng đệm đĩa, không tác động đến RAM mà các ứng dụng đang thực sự chiếm giữ.
    Đồng bộ dữ liệu trước trước khi xóa bộ nhớ cache
    Đồng bộ dữ liệu trước trước khi xóa bộ nhớ cache (Nguồn: Internet)

    Thay vì xóa bộ nhớ thủ công, bạn hãy cấu hình Kernel để tối ưu hóa việc sử dụng RAM dài hạn.

    Điều chỉnh tham số Swappiness

    Giá trị vm.swappiness (mặc định là 60) quyết định mức độ ưu tiên của hệ thống khi chuyển dữ liệu từ RAM sang Swap. Nếu bạn muốn Linux ưu tiên dùng RAM hơn, hãy giảm giá trị này xuống thấp (ví dụ: 10) bằng lệnh:

    sysctl vm.swappiness=10

    Giới hạn bộ nhớ cho các ứng dụng

    Thay vì dọn RAM cho cả hệ thống, bạn hãy cô lập các tiến trình ngốn RAM bằng cách thiết lập giới hạn thông qua

    • Sử dụng Systemd: Cấu hình MemoryLimit= trong file service.
    • Sử dụng Docker: Thêm tham số --memory="512m" khi chạy container.

    Thiết lập bảo vệ tiến trình với OOM Killer

    Bạn có thể thiết lập tham số oom_score_adj cho các tiến trình quan trọng (như Database). Chỉ số này càng thấp (ví dụ: -1000), tiến trình đó càng được bảo vệ an toàn, không bị OOM Killer buộc dừng khi hệ thống cạn kiệt RAM.

    Tăng bộ nhớ trống tối thiểu

    Điều chỉnh tham số vm.min_free_kbytes giúp hệ thống luôn giữ lại một khoản RAM trống nhất định. Điều này rất hữu ích trên các máy chủ mạng có lưu lượng lớn, giúp chống phân mảnh bộ nhớ và tránh tình trạng card mạng bị rớt gói tin (drop packets).

    Giải pháp thay thế cho xóa Cache thủ công
    Giải pháp thay thế cho xóa Cache thủ công

    Câu hỏi thường gặp

    Có nên xóa bộ nhớ đệm, bộ đệm và swap trong Linux không?

    Thông thường, bạn không nên chủ động xóa nhớ đệm, bộ đệm và swap trên Linux vì hệ thống đã được tối ưu để tự quản lý các vùng bộ nhớ này. Việc xóa thủ công có thể gây ảnh hưởng tiêu cực đến hiệu suất của máy chủ. Bạn chỉ thực hiện thao tác này khi thật sự cần thiết, ví dụ khi gặp sự cố thiếu bộ nhớ nghiêm trọng và các phương án khác không hiệu quả. 

    Xóa bộ nhớ cache có ảnh hưởng gì đến hoạt động của các ứng dụng đang chạy trên Linux không?

    Việc xóa bộ nhớ cache trên Linux không làm đóng ứng dụng hoặc giải phóng RAM mà các tiến trình đang sử dụng mà chỉ giải phóng vùng bộ nhớ mà kernel dùng làm bộ đệm cho các hoạt động đọc/ghi đĩa. Tuy nhiên, sau khi cache bị xóa, ứng dụng/hoạt động truy xuất dữ liệu sẽ chậm hơn ở lần đầu tiên do phải đọc trực tiếp từ ổ cứng, đến khi cache được build lại.

    Lệnh sync có vai trò gì trước khi dọn cache?

    Lệnh sync đảm bảo tất cả dữ liệu đang đợi ghi xuống ổ cứng được hoàn tất, giảm thiểu nguy cơ mất hoặc lỗi dữ liệu khi bộ nhớ cache/buffer bị xóa. Nếu bỏ qua sync, dữ liệu chưa ghi sẽ biến mất khi bộ nhớ cache bị giải phóng.

    Có nên tắt chức năng swap hoàn toàn trên máy chủ Linux không?

    Bạn chỉ nên tắt swap hoàn toàn trên các hệ thống có dung lượng RAM dư dồi, workload ổn định và ít khi vượt ngưỡng bộ nhớ vật lý. Với các máy chủ chuyên dụng cho database hoặc container, tắt swap giúp tránh hiệu suất bị thấp đi do ghi/đọc lên ổ cứng chậm, nhưng với server tổng hợp hoặc nhiều tiến trình, swap lại giúp hệ thống tránh treo khi thiếu RAM đột ngột.

    Việc kiểm soát bộ nhớ cache định kỳ bằng các phương pháp trên sẽ giúp hệ thống Linux vận hành ổn định, tiết kiệm tài nguyên và phòng tránh sự quá tải bộ nhớ RAM. Hãy lựa chọn giải pháp phù hợp với đặc thù vận hành của hệ thống của bạn để tối ưu hiệu quả sử dụng. Mời bạn tham khảo thêm các bài viết thuộc chủ đề Linux của mình ngay sau đây:

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng
    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng

    dmidecode là một công cụ dòng lệnh trên Linux dùng để đọc và hiển thị thông tin phần cứng máy tính từ bảng DMI hoặc SMBIOS cung cấp bởi BIOS, giúp kiểm tra chi tiết như nhà sản xuất, model, số serial, BIOS, CPU, RAM mà không cần mở máy. Trong bài viết này, mình…

    27/02/2026

    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx
    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx

    Lệnh partx Linux là một công cụ dòng lệnh thuộc gói util-linux, được sử dụng để thêm, xóa hoặc liệt kê các phân vùng của thiết bị đĩa vào bảng phân vùng của hệ thống mà không cần khởi động lại hoặc gắn lại thiết bị. Trong bài viết này, mình sẽ hướng dẫn bạn…

    27/02/2026

    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng
    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng

    Trong môi trường quản trị Linux, việc kiểm tra tốc độ xung nhịp CPU là một thao tác cần thiết giúp người dùng đánh giá khả năng chịu tải, phát hiện các điểm nghẽn hiệu suất  và hỗ trợ tối ưu trong quá trình tối ưu hóa hoặc khắc phục sự cố phần cứng. Trong…

    27/02/2026

    Hướng sử dụng function trong Bash shell chi tiết, hiệu quả
    Hướng sử dụng function trong Bash shell chi tiết, hiệu quả

    Function trong Bash shell là một khối lệnh được đặt tên, dùng để gom nhóm các câu lệnh lại và tái sử dụng nhiều lần trong script thay vì phải viết lặp đi lặp lại. Trong bài viết này, mình sẽ hướng dẫn cách gọi và truyền tham số cho function trong Bash, đồng thời…

    27/02/2026

    linux

    system-linux

    text