Thứ Tư, 29 tháng 3, 2017

Tính năng Transparent HugePage trong RHEL6 và ảnh hưởng

Transparent HugePage là gì?

Transparent HugePage (THP) là một tính năng của Linux Kernel và được mặc định "bật" trong RHEL6. Tính năng này có đặc thù gì mà RHEL lại mặc định bật tính năng này lên?
Để hiểu được THP, ta quay lại tìm hiểu cách Linux quản lý bộ nhớ. Bộ nhớ trên Linux được chia làm các pages. Mỗi pages có kích thước 4096 bytes. CPUs có một đơn vị phần cứng chuyên chịu trách nhiệm quản lý bộ nhớ gọi là Memory Management Unit (MMU). Bộ phận này quản lý bảng danh sách các pages, mỗi phần tử được tham chiếu qua một page table entry
Có 2 cách tăng danh sách bộ nhớ quản lý được:
  • Tăng kích thước bảng danh sách pages
  • Tăng kích thước mỗi pages
RHEL THP giải quyết việc quản lý bộ nhớ theo cách 2. Kích thước mỗi page thay vì 4KB sẽ tăng lên từ 2MB đến 1GB. Nhờ vậy chỉ với số lượng entry nhỏ, bộ nhớ quản lý được có thể trải ra hàng TB. Ngoài ra HugePage có đặc điểm: HugePage một khi được khởi tạo lúc khởi động sẽ không bao giờ được swap xuống đĩa cứng.

Tại sao dùng Transparent HugePage?

HugePage cũng giúp bảng quản lý page của MMU có ít entry hơn, giảm overhead của việc quản lý bảng này. Ngoài ra do đặc thù của HugePage là không bị swap ra đĩa cứng, swap daemon (kswapd) không cần phải quan tâm đến những page này. Kernel không phải tìm pages này. Như vậy, số lượng pages giảm đồng nghĩa với việc các thao tác với bộ nhớ sẽ giảm, đồng thời giảm bottleneck tại bộ nhớ

Người bị hại bởi HugePage

Transparent HugePage có vẻ là tính năng cải thiện hiệu năng đáng kể và có lẽ vì lý do đó mà RHEL 6 bật chức năng này từ đầu. Tuy nhiên, nếu tìm thử trên google bạn sẽ thấy số lượng "người bị hại" bởi tính năng này cũng không kém. Redis khuyên nên tắt chức năng HugePage để giảm latency. Bật HugePage làm giảm hiệu năng của Riak và Elasticsearch. Các vendor cung cấp giải pháp BigData hadoop như Cloudera cũng khuyến cáo nên tắt chức năng này. Sổ tay cấu hình hệ thống của nhiều sysadmins cũng ghi chú là nên tắt chức năng nàyviết

HugePage có lợi khi nào?

Nhìn danh sách các middleware yêu cầu tắt THP mình đã tự hỏi là ứng dụng kiểu nào thì sẽ có lợi từ chức năng này. Mình thử google và ra một số báo cáo cho thấy là hiệu năng có tăng lên sau khi dùng THP. Báo cáo của IBM cho thấy dùng RHEL6 với THP bật giúp tăng hiệu năng máy chủ WebSphere
alt text
Theo như báo cáo thì hiệu năng tăng khoảng 5%.
Không phải là Linux, nhưng một hãng sản xuất Load-Balancing đã quan sát sự tăng đáng kể của hiệu năng trong sản phẩm của họ bằng cách bật super huge pages (1GB pages!)
Tìm thử thấy có cả nghiên cứu ảnh hưởng tích cực của THP đến OpenMP.
Xem ra THP không hẳn đã hại người :D

Cách tắt chức năng Transparent HugePage

Dù thế nào thì trên trang chính thức của Redhat, họ cũng có viết là:
However, THP is not recommended for database workloads.
Do vậy nếu máy tính đang chạy một trong các ứng dụng bị hại thì ta nên tắt THP. Cách tắt như sau:
Trên RHEL (Redhat Linux, CentOS, Scientific Linux ...)
$ echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
$ echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' >> /etc/rc.local
Trên Ubuntu/Debian, OEL, SLES
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
$ echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local

Không có nhận xét nào:

Đăng nhận xét