GIT – Trong quá trình quản trị và tối ưu hệ thống (/Unix OS), bạn phải biết được một điều, đó là, hệ thống của bạn đang “dùng” bao nhiêu %RAM và còn dư bao nhiêu?

Virtual Memory ?

Physical memory: chính là bộ nhớ RAM của hệ thống chúng ta. Nó đại diện cho dung lượng bộ nhớ vật lý được cài đặt lên server, và nó là một tài nguyên có giới hạn. Thành phần quản lý bộ nhớ của Linux sẽ luôn tìm cách giải phóng các phần (portion) bộ nhớ không được dùng đến để cấp phát cho các tác vụ khác.

Các process chạy trên hệ thống sẽ sử dụng các phần bộ nhớ được cấp để hoạt động, điều này không phải bàn cãi. Tuy nhiên, không phải toàn bộ thời gian chạy chúng sử dụng hết phần bộ nhớ này. Và do đó, nhân Linux sẽ tìm cách ghi một phần hoặc toàn bộ bộ nhớ của process lên disk cho đến khi chúng được dùng trở lại.

Việc quản lý bộ nhớ như vậy sử dụng hai thao tác quan trọng có tên là swapping và paging. Trong đó, paging là thao tác sao chép một phần nhớ (được gọi là page) của process lên disk. Trong khi đó, swapping thực hiện một công việc nặng nề hơn, đó là sao chép toàn bộ vùng nhớ của một process lên disk. Thường thì trên Linux, việc swapping xảy ra không thường xuyên, và hai khái niệm swapping và paging hay được dùng lẫn với nhau.

Khi một page được sao chép ra disk, ta gọi thao tác này là page-out. Và ngược lại, khi page được copy từ disk vào memory thì được gọi là page-in. Một sự kiện page-fault xảy ra khi process cần truy cập tới vùng nhớ trong một page, nhưng page đó hiện thời không có trong memory mà nó đang ở disk, và khi đó, phải tiến hành đọc từ disk để lấy page đó về (page đó sẽ được page-in lại và đọc từ memory).

Thao tác page-in tương đối phổ biến, ví dụ như khi hệ thống mới khởi động, hoặc các dữ liệu mới được đọc lên thì hầu hết các truy cập đều là page-in. Tuy nhiên, page-out thì lại khác, nó thường là dấu hiệu của một quá trình suy giảm hiệu năng hệ thống. Bởi vì khi kernel phát hiện ra lượng bộ nhớ của hệ thống không còn đủ, nó sẽ thực hiện các thao tác thu hồi thêm bộ nhớ thông qua page-out. Và nếu như việc này diễn ra thường xuyên, với số lượng lớn, thì lúc đó, hệ thống sẽ phải dành tài nguyên xử lý cho các thao tác page-out thay vì xử lý cho ứng dụng. Lúc này hiệu năng của hệ thống giảm sút nghiêm trọng và được coi là thrashing.

Việc sử dụng không gian nhớ swap không phải là điều tệ hại tuyệt đối mà tác động của nó cũng gây tranh cãi trong nhiều tình huống. Ví dụ, nếu như trên hệ thống có một ứng dụng tiêu tốn bộ nhớ nào đó đang trong trạng thái rảnh, sẽ tốt hơn nếu như các phần tử nhớ của nó được chuyển ra disk và nhường cho các tác vụ lớn khác đang chạy. Lúc đó, nhân sẽ có điều kiện để sử dụng phần nhớ rảnh này vào các việc khác để tăng hiệu năng như disk buffering.

Sử dụng vmstat để theo dõi tình trạng bộ nhớ hệ thống.

vmstat cho phép hiển thị các báo cáo về virtual memory như độ lớn, phần còn trống, các thao tác paging, … và quan trọng hơn cả là các thao tác page-in, page-out.

Để theo dõi, tốt nhất là nên chạy lệnh này với một độ trễ (delay) nhất định giữa hai lần update. Tương tự lệnh free hay top. Ta có thể chỉ định số lần cập nhật kết quả. Ví dụ muốn xem report 10 lần, mỗi lần cách nhau 5 giây:

# vmstat 5 10
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 945204 586108 1629504    0    0    38    40  456  180 12  4 83  1  0
1  0      0 952684 586124 1625272    0    0     0     9 1112 2615 12  4 83  1  0
0  0      0 950444 586136 1626488    0    0     0    11 1324 3322 14  7 79  0  0
0  0      0 950396 586144 1626228    0    0     0  1969 1127 2980 12  5 82  0  0
0  0      0 950784 586160 1626176    0    0     0    67 1183 3305 13  5 79  3  0
0  0      0 950112 586172 1627668    0    0     0     4 1175 3198 15  6 79  0  0
0  0      0 950896 586180 1626224    0    0     0     4 1051 2617 12  5 84  0  0
0  0      0 949408 586188 1627684    0    0     0     2 1165 3306 14  6 80  0  0
0  0      0 950852 586196 1626284    0    0     0     5 1031 2672 11  4 84  0  0
0  0      0 950440 586204 1628388    0    0     0     8 1175 3206 14  6 79  0  0

Nhìn vào kết quả, ta thấy cột so nhận các giá trị 0 liên tục, như vậy có thể yên tâm là không có page-out. Các cột so và si này thực ra thay cho po hay pi như ta đã đề cập ở trên.

Thảo luận bài viết tại forum : http://forum.gocit.vn/threads/quan-ly-ram-tren-he-thong-linux-unix.437/

Print Friendly

Comments

comments

Bài viết liên quan