High memory và Low memory trong Linux là gì?

Khi chạy lệnh show module status từ CLI hoặc lệnh cat/proc/meminfo trên mô-đun, đầu ra liệt kê các giá trị cho bộ nhớ High memory và Low memory:

total: used: free: shared: buffers: cached:
 Mem: 1049051136 765775872 283275264 0 158441472 376979456
 Swap: 1036115968 0 1036115968
 MemTotal: 1024464 kB
 MemFree: 276636 kB
 MemShared: 0 kB
 Buffers: 154728 kB
 Cached: 368144 kB
 ...
 HighTotal: 131072 kB
 HighFree: 3064 kB
 LowTotal: 893392 kB
 LowFree: 273572 kB

Vậy bạn đã biết High memory và Low memory trong Linux là gì chưa? Cùng Quantrimang.com tìm hiểu qua bài viết sau đây nhé!

High memory và Low memory là gì?

High memory

  • High memory (vùng nhớ cao) là phần bộ nhớ mà các chương trình user-space có thể xử lý. High memory không tác động vào Low memory.
  • Low memory (vùng nhớ thấp) là phần bộ nhớ mà Linux kernel có thể xử lý trực tiếp. Nếu kernel phải truy cập vào High memory, trước tiên kernel phải ánh xạ vào không gian địa chỉ của chính nó.

High memory và Low memory được sử dụng như thế nào?

Low memory

Trên hệ điều hành Linux 32-bit, CPU có thể xử lý tối đa 4GB bộ nhớ. Bộ nhớ được chia thành Low memory (hay còn gọi là Normal memory), được ánh xạ trực tiếp vào phần không gian địa chỉ của kernel, và High memory, không có ánh xạ kernel trực tiếp. Nói cách khác:

  • Bản thân kernel (bao gồm các mô-đun hoạt động của nó, ví dụ các mô-đun Check Point kernel) chỉ có thể sử dụng Low memory.
  • Những tiến trình người dùng trên hệ thống (bất kỳ thứ gì không phải là kernel) đều có khả năng sử dụng cả Low và High memory.

Những tình huống có thể xảy ra với High memory và Low memory

Do giới hạn của Low memory, OoM (Out of Memory killer) có thể được gọi ngay cả khi còn rất nhiều bộ nhớ trống. Tình huống này xảy ra khi Low memory cạn kiệt và kernel cần cấp phát thêm bộ nhớ. Tuy nhiên, một tình huống bất thường có thể xảy ra là còn rất nhiều High memory trống nhưng lại hết Low memory. Phổ biến hơn là cả High và Low memory đều gần bằng 0.

High memory thường bắt đầu ở mức trên 896MB. Tuy nhiên, trên Blue Coat X-Series chassis, các giới hạn sẽ khác nhau.

Xin lưu ý rằng trên hệ điều hành 64-bit, vì có quá nhiều không gian địa chỉ bộ nhớ ảo, nên Low memory bằng Total memory (Tổng bộ nhớ). Khi chạy lệnh show module status từ CLI, giá trị High memory và Low memory sẽ không xuất hiện.

Slot 14:
 SDRAM 1 Size 1048576(KB)
 SDRAM 2 Size 1048576(KB)
 SDRAM 3 Size 1048576(KB)
 SDRAM 4 Size 1048576(KB)
 SDRAM Total Size 4194304(KB)
 Reserved Memory 602536(KB)
 Total Memory 3591768(KB)
 Used Memory 453144(KB)
 Free Memory 3138624(KB)
 Shared Memory 0(KB)
 Buffers Memory 139340(KB)
 Cached Memory 187200(KB)
 Memory Utilization 3.52%

Khi chạy lệnh cat /proc/meminfo trên mô-đun, HighTotalHighFree sẽ luôn bằng 0:

# cat /proc/meminfo
 MemTotal: 3591768 kB
 MemFree: 135968 kB
 Buffers: 378312 kB
 Cached: 1754432 kB
 SwapCached: 68 kB
 Active: 965532 kB
 Inactive: 2080476 kB
 HighTotal: 0 kB
 HighFree: 0 kB
Thứ Năm, 25/04/2019 17:25
4,33 👨 205