Thứ Ba, 4 tháng 9, 2012

Hyperthread Core Sharing & CPU Affinity

Với CPU của một máy ảo, bên cạnh những cấu hình liên quan đến việc chia sẻ tài nguyên (Shares, Reservation, Limit), ESXi còn cho phép chỉnh sửa 02 tính năng nâng cao khác : đó là Hyperthreaded Core SharingCPU Affinity.



Hyperthreaded Core Sharing (HCS)

ESXi cung cấp 03 mode hoạt động Hyperthreaded Core Sharing như bên dưới :


Các lựa chọn Hyperthreded Sharing này hoàn toàn không ảnh hưởng đến độ ưu tiên sử dụng physical CPU của các máy ảo. Các thông số Shares, Reservation, Limit vẫn giữ vai trò quyết định đến độ ưu tiên và quá trình phân phối tài nguyên của hệ thống.

Với những workload bình thường, chúng ta nên giữ nguyên mode Any mặc định. Trong một số trường hợp đặc biệt, ví dụ với những ứng dụng thường xuyên làm cho bộ nhớ cache của CPU bị thrash thì nên cài đặt mode None cho máy ảo chạy ứng dụng đó.

Ngoài ra, cũng cần lưu ý là khi một vCPU nào đó ở mode None nhưng thời điểm này lại có một vCPU khác đang được cấp phát tài nguyên (nhắc lại là việc vCPU nào được cấp phát tài nguyên phụ thuộc vào các tham số Shares, Reservation và Limit) thì vCPU ở mode None sẽ bị descheduled khỏi cores đó. (vCPU ở mode None không chia sẻ core với các vCPU khác). Tình huống này trở nên đặc biệt xấu khi số lượng cores của hệ thống không nhiều và vCPU ở mode None không thể tìm được core nào để schedule các instruction của nó, từ đó performance của VM tương ứng sẽ bị downgrade nghiêm trọng.

CPU Affinity

VM-VM Affinity cho phép 02 VMs luôn nằm chung 01 host.
Host-VM Affinity cho phép 01 VM nào đó luôn nằm ở 01 host nào đó.
--> tương tự như vậy, CPU Affinity cho phép các vCPU của 01 VM sẽ nằm trên 1 tập hợp processors nào đó. Trong trường hợp sử dụng hyperthreading, processors nói ở trên là các logical processors / threads.
Trong trường hợp không sử dụng hyperthreading, processors là các cores nằm trên các sockets.

Khi cấu hình CPU Affinity cho 1 VM thì cấu hình này sẽ được áp dụng cho tất cả vCPU cùng các threads khác thuộc về VM đó. Các threads khác ở đây là những threads xử lý các tiến trình liên quan đến việc emulate mouse, keyboard, screen, CD-ROM và 1 số thiết bị thông dụng khác.

Trong một số trường hợp, ví dụ như khi VM cần sử dụng cả vCPU và các thread cùng lúc thì việc sử dụng CPU Affinity có thể downgrade performance của hệ thống khi mà processor chỉ có thể scheduled cho hoặc là CPU hoặc là thread tại 1 thời điểm cụ thể. Ví dụ cụ thể của tình huống này là khi VM chỉ có 1 vCPU được affnity đến 1 processor hoặc khi VM có 2 vCPU được affinity đến 2 processors.

Để tránh trường hợp trên xảy ra, ta nên bổ sung thêm tối thiểu 01 physical processors vào danh sách các processors được affinity. Ví dụ như VM có 1 vCPU được affinity đến 02 processors hay VM có 2 vCPU được affinity đến 03 processsors.

Một số lưu ý khi sử dụng CPU Affinity

  1. Với hệ thống multiprocessors, ESXi tự động load-balancing giữa các socket, core, thread. Việc sử dụng CPU Affinity sẽ phát vỡ hoạt động load-balancing này.
  2. Cấu hình Affinity có thể không đồng bộ với cấu hình Reservation và Shares giữa các VM
  3. CPU Admission Control (chỉ bật VM khi có đủ Reservation Resources) không xem xét các cấu hình CPU Affinity do đó sẽ có trường hợp VM không có đủ tài nguyên như giá trị Reservation được cấu hình. Ví dụ : 
    • VM1 có CPU Reservation là 1GHZ. 
    • Host có 02 cores (không kích hoạt Hyperthread) : core 1 còn 500GHz available, core 2 còn 700GHz available. 
    • VM1 được cấu hình CPU Affinity với core 1. 
    • --> host nhận thấy số lượng CPU Available là 500GHz + 700GHz =1,2GHz > 1GHz do đó VM1 vẫn được power on, nhưng vì VM1 chỉ được phép hoạt động trên CPU core 1 nên VM1 chỉ sử dụng được tối đa 500GHz còn available của core 1.
  4. CPU Affinity không tương thích với vMotion và các ứng dụng hoạt động dựa trên vMotion.
  5. CPU Affinity ảnh hưởng đến hiệu quả sử dụng tài nguyên chia sẻ trên hệ thống multiprocessor.

Popular Posts

Recent Posts

Categories

Unordered List

Text Widget

Pages