Góc IT - Blog công nghệ
toiuuhoatocdo

Nên cấp phát bao nhiêu vCPU cho một máy ảo?

Đây là vấn đề vướng mắc lớn đối với những người quản trị hệ thống ảo hóa. Việc cấp phát tài nguyên ảnh hưởng đến hiệu suất của hệ thống. Nếu cấp phát không đúng có thể làm hệ thống chạy rất chậm mặc dù tài nguyên sử dụng của nó là rất thấp. Vậy làm thế nào để có thể xác định cấu hình một cách tối ưu nhất?

Nên cấp phát bao nhiêu vCPU cho một máy ảo? Sự khác nhau giữa Virtual Sockets và Cores per socket?

Sau một thời gian tôi bắt đầu làm quen với vSphere thì việc phân bổ cpu thực sự gây đau đầu. Nếu tài nguyên của bạn dư thừa đương nhiên sẽ dễ dàng hơn.Nhưng với hệ thống cần tận dụng tối đa tài nguyên thì nó trở thành vấn đề hoàn toàn khác. Sau đâu tôi sẽ đưa ra một số nguyên tắc theo quan điểm cũng như hiểu biết của tôi về hoạt động và lập lịch của vSphere.

Trước tiên các bạn phải hiểu khi phân bổ cpu cho một máy ảo thì các vSphere lập lịch như thế nào.Chúng ta cùng làm một ví dụ:
Bạn có một máy chủ ESX/ ESXi có 8 core. Máy chủ tạo ra 10 máy ảo chạy trên nó, một máy đang được cấu hình cấp 1vCPU.Làm thế nào để chúng hoạt động. vCPU trong máy ảo lần lượt sử dụng các core vật lý. Bởi vì có 8 core nên 8 máy ảo có thể sử dụng tài nguyên CPU tại một thời điểm (Mỗi vCPU sẽ chiếm 1 core tại mỗi thời điểm). Bởi thế 2 máy ảo còn lại phải đợi để đến lượt nó. Hành vi trao đổi này là bình thường có thể thấy trong các máy chạy windows do đó nó không gây sụp đổ máy ảo nhưng có thể làm chậm. Do mặc dù 2 máy ảo còn lại đã được lập lịch để sử dụng core vật lý nhưng vì core vật lý đang bị chiếm tại thời điểm đó nên nó phải đợi. Đây cũng chính là thông số %RDY tôi đã viết ở bài trước.

Bây giờ bạn đã biết nguyên tắc đơn giản nhất của việc lập lịch. Tôi sẽ giới thiệu cho bạn biết một khái niệm mới:
– Một máy ảo với nhiều vCPU phải đợi cho tới khi nó đủ số core vật lý mới có thể truy cập vào tài nguyên CPU của ESX/ ESXi. Nhận biết này vô cùng quan trọng – Không phải cứ tăng số vCPU trong máy ảo là khiến nó chạy nhanh hơn – giúp ta xác định nên cấu hình bao cpu cho máy ảo.
Nguyên tắc như sau:
– Hiệu suất tốt nhất là 1vCPU cho mỗi máy ảo – Lúc này nó sẽ không phải đợi đủ số core để chạy (Lưu ý kiểm tra tải trọng của CPU để đảm bảo nó không bị full – Điều này là tất nhiên)
– Tỉ lệ pcpu : vcpu là 1:1 đến 1:3 – Đây là tỉ lệ nói chung được đánh giá tương đối ổn định.Ngoài ra với hệ thống thực tế cần phải monitor các thông số khác để đảm bảo hiệu năng phù hợp nhất
– Các giới ngưỡng sau đây (Tham khảo sử dụng esxtop)
o CPU %RDY 10 Overprovisioning of vCPUs, excessive usage of vSMP or a limit(check %MLMTD) has been set. See Jason’s explanation for vSMP VMs
o CPU %CSTP 3 Excessive usage of vSMP. Decrease amount of vCPUs for this particular VM. This should lead to increased scheduling opportunities.
o CPU %SYS 20 The percentage of time spent by system services on behalf of the world. Most likely caused by high IO VM. Check other metrics and VM for possible root cause
o CPU %MLMTD 0 The percentage of time the vCPU was ready to run but deliberately wasn’t scheduled because that would violate the “CPU limit” settings. If larger than 0 the world is being throttled due to the limit on CPU.
o CPU %SWPWT 5 VM waiting on swapped pages to be read from disk. Possible cause: Memory overcommitment.

 

Một số hiểu biết cơ bản về nhân xử lý, số nhân và tốc độ chip xử lý

Nội dung bài viết show

Mục đích của việc chỉ ra sự khác nhau giữa chip 2 nhân và chip 4 nhân sẽ giúp bạn đưa ra các quyết định sáng suốt hơn khi chọn mua thiết bị.

Trong mỗi chiếc máy tính, CPU được ví như “trái tim” của cỗ máy làm nhiệm vụ xử lý các tác vụ mà người dùng đề ra. Ngày nay, hầu hết các CPU đều có từ 2 nhân xử lý trở lên và cụm từ 2 nhân, 4 nhân, hay thậm chí là 10 nhân xử lý là các cụm từ chúng ta thường gặp. Trong bài viết này, chúng ta sẽ tìm hiểu chính xác nhân xử lý là gì, vi xử lý 2 nhân và 4 nhân là gì và ảnh hưởng thực tế của chúng với việc sử dụng hàng ngày.
Mục đích của việc chỉ ra sự khác nhau giữa chip 2 nhân và chip 4 nhân sẽ giúp bạn đưa ra các quyết định sáng suốt hơn khi chọn mua thiết bị, từ laptop tới tablet…, như chọn chip xung nhịp cao mặc dù số nhân xử lý ít hơn thay vì làm ngược lại.
Nhân CPU là gì?
Trên thực tế, mỗi nhân CPU thực chất là 1 CPU vật lý riêng biệt. Một CPU 2 nhân tuy bề ngoài giống như CPU đơn nhân, nhưng thực ra nó có 2 CPU vật lý trên con chip.
CPU thứ 2 thêm vào đó cho phép máy tính của bạn làm được nhiều việc, xử lý nhiều tác vụ cùng 1 lúc. Nếu đã từng dùng các PC chỉ có chip 1 nhân, bạn hẳn sẽ dễ dàng nhận thấy sự khác biệt sau khi nâng cấp máy tính của mình lên chip 2 nhân: máy chạy mượt mà hơn, các ứng dụng không gặp hiện tượng chậm, lag.

 

Một ví dụ như khi bạn vừa thực hiện giải nén 1 tập tin vừa lướt web cùng 1 lúc. Nếu PC của bạn chỉ có chip 1 nhân, việc lướt web của bạn sẽ trở nên rất khó khăn và hiện tượng chậm máy xảy ra. Đó là vì lúc này con chip phải cùng 1 lúc gánh 2 công việc: lướt web và giải nén file. Nếu bạn có 1 CPU với 2 nhân xử lý, lúc này một nhân sẽ chịu trách nhiệm xử lý việc giải nén, trong khi nhân còn lại làm công việc lướt web. Lúc này, việc duyệt web của bạn sẽ mượt mà hơn rất nhiều.
Bên cạnh đó, cho dù bạn không chạy nhiều ứng dụng cùng lúc, PC của bạn cũng thường chạy ngầm các tác vụ. Bởi thế, ngày nay bạn nên trang bị cho PC của mình 1 con chip ít nhất có 2 nhân xử lý trở lên nếu muốn hệ thống hoạt động mượt mà.
Hiện nay nhiều ứng dụng khi được lập trình cũng được phát triển để tận dụng các CPU đa nhân. Ví dụ như trình duyệt Chrome của Google. Chrome render mỗi website với từng tiến trình (process) riêng biệt. Điều này cho phép trình duyệt sử dụng các CPU vật lý khác nhau cho các website khác nhau thay vì sử dụng 1 CPU cho tất cả các tác vụ liên quan đến duyệt web.
Tốc độ xung nhịp và nhân
Từng CPU đều có tốc độ xung nhịp (clock speed) đại diện cho tốc độ làm việc nhanh hay chậm của con chip xử lý đó. Ví dụ, chip Core i5-3330 của Intel là chip 4 nhân có tốc độ xung nhịp là 3 GHz. Như vậy có nghĩa là từng nhân trong 4 nhân trong con chip này đều có tốc độ 3 GHz.
Hiện nay, nhiều chương trình máy tính là các chương trình đơn luồng (single-threaded), tức là nó không tận dụng được các CPU đa nhân. Chúng phải chạy trên 1 nhân mà thôi. Bởi thế, một con chip có số nhân gấp đôi không đồng nghĩa với việc hiệu năng được tăng lên 2 lần. Nếu bạn có 1 ứng dụng đơn luồng chạy trên hệ thống có CPU 4 nhân tốc độ 3 GHz, ứng dụng đó sẽ chạy ở tốc độ chỉ 3 GHz mà thôi. Ứng dụng sẽ chỉ dùng tới 1 nhân xử lý, còn 3 nhân còn lại sẽ nằm ở trạng thái idle (nghỉ). Nếu có một tác vụ khác được yêu cầu, các nhân này mới đi vào hoạt động.

 

Trong khoa học máy tính, việc viết các ứng dụng đa luồng (multithreaded) với khả năng scale (mở rộng) được trên nhiều CPU cùng lúc là một công việc không hề đơn giản. Trong khi đó, xu hướng hiện nay là các nhà sản xuất thường đi theo hướng tăng số nhân cho vi xử lý thay vì tăng mức xung cho con chip. Hệ quả là tốc độ chạy nhiều ứng dụng không được cải thiện bởi chúng không thể tận dụng được số nhân thêm vào này trong khi xung nhịp của từng CPU vẫn như cũ.
Một vài ứng dụng hiện nay có thể tận dụng được các CPU đa nhân như Google Chrome đã nói trên. Kiến trúc đa tiến trình của Chrome cho phép trình duyệt này thực hiện công việc với nhiều nhân xử lý khác nhau cùng lúc. Một số game máy tính hiện nay cũng vậy. Tuy nhiên, hầu hết các ứng dụng mà chúng ta sử dụng thường ngày là các ứng dụng đơn luồng. Microsoft Office là một ví dụ. Một CPU 4 nhân sẽ không giúp bạn chạy Office nhanh hơn 2 lần so với CPU 2 nhân. Nếu như bạn không mở thêm các ứng dụng khác mà chỉ chạy Office, tốc độ khi chạy ứng dụng này là như nhau trên CPU 4 nhân và CPU 2 nhân.
Chip nhiều nhân có ích khi bạn chạy nhiều ứng dụng cùng lúc và khi bạn chạy các ứng dụng đa luồng. Một ví dụ như nếu bạn cùng lúc vừa chạy máy ảo, vừa encode video, vừa giải nén tập tin…trên máy, một CPU 10 nhân sẽ giúp công việc của bạn trôi chảy hơn nhiều so với CPU 4 nhân.
Các…số nhân xử lý hiện nay
Trong vi xử lý, bạn sẽ hay gặp 1 số thuật ngữ bao gồm: 2 nhân (dual core), 4 nhân (quad core)…nhằm chỉ số nhân các CPU có. Hiện nay, số nhân phổ biến bao gồm:
– 2 nhân: Dual Core
– 4 nhân: Quad Core
– 6 nhân: Hexa Core
– 8 nhân: Octo Core
– 10 nhân: Deca Core
Điều khiển và theo dõi các nhân
Trong thực tế bạn có thể điều khiển các ứng dụng đang chạy để bắt nó chạy trên nhân (CPU vật lý) mà bạn thích. Trong task manager của Windows, bạn click chuột phải vào tiến trình của ứng dụng đang chạy và chọn Set Affinity để làm điều này. Tuy nhiên, bạn nên để các thiết lập này theo mặc định và không nên “nghịch” nó, trừ khi bạn muốn hạn chế 1 ứng dụng nặng nào đó vào 1 nhân riêng nhằm tránh bug khi chạy các game PC cũ.
Cũng từ task manager, bạn cũng có thể theo dõi hoạt động của tất cả các nhân ở thẻ Performance.
Siêu phân luồng: Hyper-Threading
Các CPU của Intel sử dụng 1 công nghệ có tên gọi là “siêu phân luồng”. Với công nghệ này, mỗi nhân vật lý tự nó báo với HĐH là 2 nhân logic. Như trong ảnh chụp ở trên, trong thực tế PC chỉ được trang bị CPU 4 nhân với công nghệ siêu phân luồng chứ không phải là chip 8 nhân như bạn thấy.
Công nghệ này nhìn chung sẽ giúp cải tiến hiệu năng của chip trong 1 vài trường hợp, nhưng không có chuyện chip 4 nhân với siêu phân luồng sẽ cho hiệu năng ngang hay gần bằng với chip 8 nhân thực. Tuy nhiên, một vài tinh chỉnh sẽ giúp cho chip 4 nhân Hyper-Threading có thể chạy nhiều tác vụ hơn so với chip 4 nhân không được trang bị công nghệ này.

Add comment