Sa Pham

Interested in Cloud Computing, Programming and Security.

Tìm hiểu kernel samepages merging trong Linux

01 Jun 2016 »

#####Tìm hiểu kernel samepages merging trong Linux

KSM (Kernel Samepage merging) là một tính năng của kernel cho phép hypervisor có thể chia sẻ các pages trong bộ nhớ giống hệt nhau cho các tiến trình khác nhau hoặc các VM khác nhau.

KVM có thể sử dụng KSM để hợp nhất các pages trong memory của các VMs. KSM thực hiện việc scan trong bộ nhớ chính -> Tìm kiếm các pages giống nhau. -> gộp các pages giống nhau thành một page. -> Page này được đánh dấu là “Copy On Write” có nghĩa là nếu có một tiến trình muốn modify page này. Nó sẽ tạo ra một page mới để thực hiện các thay đổi trên page đó.

Do vậy khi sử dụng KSM ta sẽ tốn một phần CPU để thực hiện việc Scan và Merge. Kết quả : Tối ưu RAM nhưng CPU phải làm việc nhiều hơn.

Điều này sẽ hữu dụng cho các ứng dụng làm việc trên cùng một dữ liệu. Ví dụ các VMs trong KVM sử dụng chung 1 OS.

#####Cấu hình KVM sử dụng KSM trên Ubuntu 14.04

KSM được tự động enable trong phiên bản kernel 2.6 trở đi. Để kiểm tra xem đã đã được enable chưa ta thực hiện lệnh sau

cat /boot/config-uname -r | grep KSM

nếu trả về CONFIG_KSM=y thì tức là KSM đã được enable.

Ta sẽ quan tâm các file trong thư mục /sys/kernel/mm/ksm/

  • full_scans: Thời gian(s)
  • merge_across_nodes: Chỉ định nếu các pages từ các node khác nhau (?)
  • pages_shared: Số pages đã shared
  • pages_sharing: Số pages đang share
  • pages_to_scan: Số pages sẽ scan
  • pages_unshared: Số pages khác nhau nhưng sẽ liên tục kiẻm tra các pages này cho việc merge
  • pages_volatile: bao nhiêu pages thay đổi quá nhanh để đặt trong 1 cây (?)
  • run:
    • 0: disable scan
    • 1: enable scan
    • 2: disable scan and unmerging
  • sleep_millisecs: tổng thời gian ksmd sleep (ms)

#####Test launch VM trên KVM

Thực hiện launch 10 VM Cirros cấu hình RAM 512MB trên KVM

Kiểm tra Ram sau khi Launch 10 VM

Thực hiện enable KSM

echo "1" > /sys/kernel/mm/ksm/run

Cho phép scan 20000 pages

echo "20000" > /sys/kernel/mm/ksm/pages_to_scan

Kiểm tra RAM đang sử dụng

Ta thấy lượng RAM giảm đi là khoảng 600MB. Các chỉ số về pages_sharedpages_sharing như hình.

#####Kết luận

Ta có thể sử dụng KSM với mục đích tạo ra nhiều VM nhưng không quan tâm hiệu năng của các VM (sẽ bị giảm đi) Các chỉ số page_sharedpages_sharing nếu càng cao càng tốt. Nếu chỉ số pages_unshared rất cao thì xem xét có nên sử dụng KSM không.