Cách quản lý bộ nhớ để hạn chế Linux sử dụng quá nhiều RAM

Bạn cài đặt Linux với lời cam kết rằng nó sẽ tiêu thụ ít tài nguyên hệ thống hơn Windows. Nhưng tại sao sau đó, hệ thống của bạn vẫn bị chậm?

Đừng hoảng sợ! Linux không làm tiêu tốn RAM của bạn. Để hiểu những gì đang xảy ra, hãy xem xét cách Linux quản lý bộ nhớ.

Cách xem RAM còn trống trên Linux

Như với bất kỳ thứ gì khác trên Linux, có nhiều cách để kiểm tra lượng RAM đang được sử dụng. Nếu có một hệ điều hành thương mại, bạn sẽ dễ dàng thực hiện việc này qua một ứng dụng như Windows Task Manager hoặc macOS Activity Monitor. Tên chương trình này phụ thuộc vào môi trường desktop Linux bạn sử dụng.

Trên GNOME, tùy chọn được sử dụng rộng rãi nhất là mở một chương trình có tên System Monitor. Trên KDE, có một lựa chọn thay thế có tính năng hoàn toàn tương tự là Konsole. Các môi trường desktop khác có các công cụ tương tự dưới nhiều tên gọi khác nhau.

Để tìm một cách tiếp cận hoạt động bất kể môi trường máy tính của bạn là gì, bạn có thể chuyển sang dùng dòng lệnh. Mở ứng dụng Terminal và gõ vào lệnh sau.

free

Bạn sẽ thấy kết quả trông giống như sau. Các con số sẽ thay đổi tùy thuộc vào lượng RAM trên máy của bạn và số lượng các chương trình đang hoạt động.

Kết quả

Để có cái nhìn chi tiết hơn về RAM trên máy của bạn, hãy thử cách này:

cat /proc/meminfo

Lệnh trên load cùng một file mà lệnh free sử dụng để xem dung lượng bộ nhớ có sẵn trên PC của bạn.

Nếu các con số của bạn không hợp lý, thì có vẻ như Linux đang tiêu tốn RAM của bạn. Giả sử bạn có 4GB RAM và 3.9GB đang được sử dụng. Chỉ có 0.1GB dung lượng trống dành cho các ứng dụng bổ sung!

Lần này, hãy hướng ánh nhìn sang cột “available”. Ở đó, bạn có thể thấy rằng bạn thực sự có 1GB dữ liệu mở cho các ứng dụng. Nhưng bằng cách nào? Tất cả đều hướng đến cách Linux quản lý và sử dụng RAM.

Cách Linux sử dụng RAM

Cách Linux sử dụng RAM không khác nhiều so với Windows và các hệ điều hành khác. Nhưng các hệ thống khác nhau thể hiện những gì đang diễn ra theo nhiều cách khác nhau.

Khi máy tính của bạn thấy rằng có RAM hiện không được sử dụng, nó dành một số không gian này cho disk cache (bộ nhớ đệm đĩa). Bằng cách này, ứng dụng lưu trữ dữ liệu ở một vị trí có thể truy cập nhanh hơn, giúp hệ thống chạy nhanh và mượt mà hơn. Khi các ứng dụng khác cần nhiều bộ nhớ hơn, chúng sẽ lấy số lượng mà các ứng dụng cần từ disk cache này.

Nói cách khác, Linux sử dụng không gian trống đó rất tốt trong thời gian nó “nghỉ ngơi”. Tại sao lại để tất cả những dung lượng bộ nhớ trống đó bị lãng phí chứ?

Để biết bao nhiêu không gian bộ nhớ được sử dụng theo cách này, hãy nhìn vào cột “buff/cache”. Đây là số lượng RAM dành riêng cho buffer (dữ liệu tạm thời) và cache (bộ nhớ đệm) tại thời điểm bạn chạy lệnh. Ý tưởng rằng việc xóa không gian này có thể giúp tăng hiệu suất là một quan niệm sai lầm phổ biến về RAM.

Sự khác biệt giữa RAM trống và RAM có sẵn

Hai khái niệm này rất dễ bị lẫn lộn. Đây là cách Linux xem xét RAM của bạn.

  • Used (Đã sử dụng): RAM hiện đang được ứng dụng sử dụng.
  • Available (Có sẵn): RAM có thể được sử dụng để lưu vào bộ nhớ đệm trên ổ đĩa nhưng có thể được giải phóng cho các ứng dụng.
  • Free (trống): RAM không được sử dụng bởi một ứng dụng hoặc bộ nhớ đệm đĩa.

Freeavailable có vẻ giống như các từ đồng nghĩa, nhưng chúng có sự khác biệt về mặt kỹ thuật. Free là bộ nhớ không được sử dụng. Available là bộ nhớ hiện đang được sử dụng nhưng có thể dễ dàng chuyển mục đích sử dụng nếu cần. Đối với việc sử dụng hàng ngày, phần dung lượng bộ nhớ available thực sự rất quan trọng.

Cách để xóa bộ nhớ RAM cache và buffer

Giả sử, vì lý do gì đó, bạn vẫn muốn xóa RAM mà hạt nhân Linux đang sử dụng cho cache và buffer của nó. Trên thực tế, làm điều này sẽ tác động tiêu cực đến hiệu suất. Nếu bạn muốn hệ thống của bạn chạy tối ưu, hãy để mọi thứ ở đúng vị trí của nó.

Bạn sẽ chạy các lệnh này với tư cách là quản trị viên hệ thống.

Để xóa pagecache, hãy nhập lệnh sau:

echo 1 > /proc/sys/vm/drop_caches

Để xóa dentries và inodes, hãy nhập lệnh sau:

echo 2 > /proc/sys/vm/drop_caches

Để xóa tất cả pagecache, dentries và inodes cùng nhau, hãy nhập lệnh sau:

echo 3 > /proc/sys/vm/drop_caches

Nếu các lệnh này không cải thiện mức độ hoạt động của PC, thì tại sao lại phải chạy chúng nhỉ? Làm như vậy là để so sánh hiệu suất máy tính của bạn sau khi thực hiện thay đổi mà không cần phải khởi động lại. Nếu bạn không đo điểm chuẩn hoặc thử nghiệm PC của mình, rất hiếm có lý do để động tới những phần này.

Cách xem và đóng các chương trình

Tất cả điều này có nghĩa là bạn không cần phải kiểm tra RAM và quản lý bộ nhớ trên Linux ư? Không hẳn là như vậy.

Mặc dù Linux biết cách tối ưu hóa RAM nhưng điều đó không có nghĩa là ứng dụng của bạn cũng thế. Đôi khi trình duyệt của bạn sẽ chiếm tất cả bộ nhớ. Một game có thể chiếm toàn bộ và không giải phóng bất kỳ tài nguyên hệ thống nào. Trình xem hình ảnh có thể bị treo khi cố load một hình ảnh có dung lượng cực lớn.

Để xem chương trình nào đang làm cho máy tính của bạn gặp vấn đề, hãy thử lệnh top sau:

top

Kết quả sẽ trông giống như sau:

Kết quả lệnh top

Bây giờ, bạn đã phát hiện ra một chương trình có vấn đề, bạn có thể làm gì với nó? Một tùy chọn là sử dụng lệnh kill. Để làm như vậy, lưu ý số PID xuất hiện bên cạnh chương trình khi bạn nhập lệnh top. Bạn sẽ cần đến nó.

kill -9 2470

Ngoài ra, bạn có thể sử dụng lệnh killall để đóng chương trình bằng tên của nó.

killall firefox

Không giống như nhiều thứ trong cuộc sống, bộ nhớ máy tính của bạn có thể ít nhiều tự quản lý. Ở đây, bài viết đã xem xét các cách để tìm hiểu những gì đang diễn ra và khi nào người dùng cần hành động. Bây giờ, bạn đã biết cách xem bộ nhớ đang sử dụng bao nhiêu công suất và chương trình nào đang sử dụng nó. Bạn cũng có thể thực hiện một vài bước để dừng các tác vụ đang chiếm quá nhiều không gian bộ nhớ.

Chúc bạn thành công!

Xem thêm:

Thứ Tư, 24/10/2018 09:51
53 👨 6.031
0 Bình luận
Sắp xếp theo
    ❖ Linux