VMWare [LT] Virtual Machine hardware deep dive(Phần 2)

Khắc Huy

Internship/Fresher
Bài viết này được viết dựa trên tổng hợp nhiều công nghệ, không nghiên cứu sâu vào một phương pháp tiếp cận hoặc một ứng dụng cụ thể nhưng có giải thích về các thuật ngữ, nếu có kiến thức nào sai vui lòng cung cấp để hoàn thiện bài viết.
Trong phần trước, mình đã giới thiệu về Virtual Machine (VM) và Hypervisor. Trong phần này mình sẽ nói về CPU virtualization và Memory Managment.

III. CPU Virtualization


1. vCPU là gì?


1726131612651.png

- vCPU (virtual CPU) là một khái niệm trong ảo hóa dùng để phân bổ tài nguyên. Khi máy ảo (VM) đang chạy, các vCPU thực chất được ánh xạ tới các lõi CPU thực, nơi mà cơ chế ảo hóa phân bổ khả năng xử lý CPU thực cho các VM theo yêu cầu.

2. Vấn đề và giải pháp với vCPU


- Thông thường, các nền tảng ảo hóa cố gắng đạt được sự phân phối tải công việc sao cho tất cả các máy khách có được tài nguyên cần thiết khi cần. Trong trường hợp này 1 vCPU (được gán cho một máy khách hoặc máy chủ ảo) tương đương với 1 lõi CPU trong hypervisor.
- Tuy nhiên, trong nhiều trường hợp, không phải tất cả các VM đều hoạt động với tải CPU tối đa cùng lúc hoặc liên tục. Điều này cho phép phân bổ một mức độ nhất định, tức là có thể gán nhiều vCPU cho các máy ảo hơn so với số lượng lõi thực tế trong hypervisor.
  • Khi điều này hoạt động đúng cách, 1 vCPU vẫn tương đương với 1 lõi CPU trong hypervisor khi đó là lượng tài nguyên mà VM cần.
  • Khi điều này không hoạt động đúng và hypervisor bị quá tải nghiêm trọng, sẽ có tranh chấp tài nguyên (CPU contention), đôi khi gọi là "thời gian đánh cắp CPU" (CPU steal time), và phần mềm ảo hóa sẽ can thiệp. Khi đó, thay vì nhận được toàn bộ khả năng xử lý của một lõi, VM sẽ nhận ít tài nguyên hơn cho mỗi vCPU so với một lõi hoàn chỉnh.
vCPU nghe có vẻ hay, sài thì có vấn đề gì không? Có nha, qua một vài bài trên internet mình đã tìm được vài vấn đề của vCPU và cũng có một vài giải pháp cơm thêm đính kèm(nếu bạn biết thêm vấn đề hay giải pháp hay hơn có thể cung cấp cho người đến sau đọc được):
  • Co-stop Contention: Đây là hiện tượng xảy ra khi các máy ảo có nhiều vCPU (virtual CPU) phải đợi để đồng bộ hóa và sử dụng cùng một lúc các lõi vật lý trên máy chủ. Điều này có thể gây chậm trễ nếu hệ thống không thể phân phối đủ lõi vật lý cho tất cả các vCPU cùng lúc. Giải pháp là giảm số lượng vCPU cho mỗi máy ảo nếu không cần thiết(Support Portal)(Know IT Like Pro).
  • CPU Ready Time: Đây là thời gian mà máy ảo sẵn sàng thực hiện tác vụ nhưng phải đợi vì CPU vật lý đang bị quá tải. Khi thời gian này quá cao, hiệu suất của máy ảo sẽ bị giảm sút nghiêm trọng. Các công cụ như ESXTOP có thể được sử dụng để theo dõi và điều chỉnh tài nguyên CPU, giúp giảm thời gian chờ(Mihai MATEI)(Know IT Like Pro).
  • Power Management Settings: Một số hệ điều hành hoặc phần mềm ảo hóa có thể không sử dụng hiệu quả tất cả các lõi hiệu suất (P-Cores) mà thay vào đó sử dụng lõi tiết kiệm năng lượng (E-Cores), dẫn đến hiệu suất không ổn định. Điều chỉnh các tùy chọn quản lý năng lượng và vô hiệu hóa các tính năng không cần thiết như Hyper-V có thể giúp cải thiện tốc độ của VM(Broadcom Community).
  • Over-Provisioning: Phân bổ quá nhiều tài nguyên vCPU cho máy ảo có thể làm giảm hiệu suất tổng thể, đặc biệt là khi hệ thống phải xử lý nhiều máy ảo cùng lúc. Thay vì gán nhiều vCPU cho mỗi VM, bạn nên bắt đầu với số lượng nhỏ và tăng dần nếu cần thiết(Mihai MATEI).

3. Chọn CPU nào cho ảo hóa?


Năm 2024, công nghệ ảo hóa doanh nghiệp phát triển mạnh với các bộ vi xử lý mới của Intel và AMD.
  • Intel ra mắt các chip Xeon Sierra Forest và Granite Rapids:
    • Sierra Forest có kiến trúc "e-core", hỗ trợ tới 288 lõi, phù hợp cho số lượng lớn máy ảo.
    • Granite Rapids tập trung vào hiệu suất cao với kiến trúc mô-đun.
  • AMD ra mắt bộ vi xử lý Epyc Zen 5 với số lượng lõi cao hơn, phù hợp cho công việc đa luồng và nhiều máy ảo.
  • Cả hai hỗ trợ các công nghệ ảo hóa quan trọng như Intel VT-x và AMD-V.
  • Những tiến bộ này giúp cải thiện hiệu suất, bảo mật, và tính linh hoạt cho các trung tâm dữ liệu.
Bài viết chỉ có tính tương đối có thể trong tương lai các chip này sẽ yếu nghề để mấy thằng gen cao hơn thay thế.

IV. Memory Management in Virtual Machines


1. Phân bổ bộ nhớ tĩnh


Mỗi VM được phân bổ một lượng RAM cụ thể từ bộ nhớ vật lý khi nó được tạo ra. Lượng RAM này được giữ cố định trong suốt quá trình hoạt động của VM, ngay cả khi VM không sử dụng hết dung lượng đó. (Cái này đơn giản quá cho nên mình không gắn tài liệu)

2. Phân bổ bộ nhớ động


Hypervisor có thể điều chỉnh lượng RAM được phân bổ cho VM dựa trên nhu cầu sử dụng thực tế. Ví dụ, trong trường hợp VM không sử dụng hết dung lượng bộ nhớ đã phân bổ, hypervisor có thể giải phóng bộ nhớ này để cung cấp cho các VM khác hoặc hệ thống chủ.( Hyper-V Dynamic Memory Overview | Microsoft Learn)

3. Kỹ thuật tối ưu RAM: Memory Sharing, Overcommitment, TPS, Ballooning, Swapping


  • Kỹ thuật chia sẻ bộ nhớ (Memory Sharing): Hypervisor có thể nhận diện và chia sẻ bộ nhớ giống nhau giữa các VM thường là sử dụng TPS. Điều này có thể xảy ra khi các VM chạy các hệ điều hành hoặc ứng dụng tương tự, giúp giảm lượng RAM vật lý cần thiết. VMware có hỗ trợ kĩ thuật này trên esxi (Memory Sharing (vmware.com)).
  • Bộ nhớ ảo hóa (Memory Overcommitment): Hypervisor có thể cho phép tổng lượng RAM phân bổ cho tất cả các VM lớn hơn bộ nhớ vật lý thực tế của hệ thống chủ. Kỹ thuật này tận dụng các khoảng thời gian mà các VM không sử dụng hết bộ nhớ được phân bổ, từ đó tối ưu hóa hiệu quả sử dụng tài nguyên.( điều này có thể dẫn đến việc sử dụng ổ đĩa làm bộ nhớ ảo khi cần, làm chậm hệ thống do sự phụ thuộc vào tốc độ của bộ lưu trữ). Memory Overcommitment (vmware.com).
  • Transparent Page Sharing (TPS): phương pháp cho phép chia sẻ các trang bộ nhớ giống nhau giữa các máy ảo. Nếu nhiều VM chạy cùng một hệ điều hành hoặc phần mềm, các trang bộ nhớ giống nhau có thể được chia sẻ, giảm thiểu việc sử dụng bộ nhớ vật lý. TPS tự động phát hiện các trang giống nhau và chia sẻ chúng. CloudHealth Secure State Docs (vmware.com)
  • Ballooning: Đây là một cơ chế mà hypervisor sử dụng để điều chỉnh động lượng RAM của các VM. Khi một VM cần thêm bộ nhớ, hypervisor có thể tạm thời lấy RAM từ các VM khác đang không sử dụng hết tài nguyên của mình, mà không cần phải truy cập bộ nhớ vật lý mới từ hệ thống chủ. Memory ballooning - Wikipedia
Swapping: Swapping được sử dụng khi hệ thống thiếu bộ nhớ vật lý và cần giải phóng bộ nhớ để phục vụ các yêu cầu khác. Khi bộ nhớ vật lý không đủ, hệ thống sẽ di chuyển dữ liệu từ bộ nhớ RAM ra đĩa cứng (swap space) để giải phóng bộ nhớ. Swap Memory: What It Is & How It Works (phoenixnap.com)
 

Attachments

  • 1726131551971.png
    1726131551971.png
    247.3 KB · Views: 0
Cách tính vCPU như thế nào?
Có thể khởi tạo VM vượt quá số core vật lý của CPU được ko?
- Một máy ảo chạy trên ESXi 8.0 có thể có 768 vCPUs.
- Tùy thuộc vào loại ảo hóa sử dụng mà có thể khởi tạo vCPU vượt qua CPU vật lý, như theo tài liệu này của VMware thì VM không thể vượt quá số core vật lý, nhưng theo một số tài liệu của vStack thì khả năng vCPU vượt qua CPU nhờ vào hypervisor là hoàn toàn có thể
 
Phải chắc chắn là có hoặc không chứ. trả lời như này thì cũng đâu giải quyết được câu hỏi đâu.
A virtual machine cannot have more virtual CPUs than the number of logical cores on the host
Tuỳ thuộc vào loại ảo hoá ạ, nếu như sử dụng VMware thì không hỗ trợ overcommit, nhưng KVM hypervisor có hỗ trợ overcommit link tham khảo
 
Với lại Logical cores được tính như thế nào. ví dụ giờ anh có 1 con máy chủ với 2 CPU Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz thì số vCore sẽ được tính như thế nào
vCPU = số thread trên mỗi core * số core * số CPU trong máy
như ví dụ của anh thì chip intel có 12 core 2 thread per core
vCPU= 2*12*2= 48
 
Last edited:
vCPU = số thread * số core * số CPU trong máy
như ví dụ của anh thì chip intel có 12 core 24 thread
vCPU= 24*12*2= 576
Nói như v là đối với máy chủ 2 CPU Intel(R) Xeon(R) CPU E5-2678 v3 @ 2.50GHz thì có thể tạo 1 con VM trên đó với tối đa 576 vCore hả? Check lại nhé e. CHeck lại host hiện tại em đang sử dụng ntn xem thử rồi trả lời nhé
 

About us

  • Securityzone.vn là một trang web chuyên về an ninh mạng và công nghệ thông tin. Trang web này cung cấp các bài viết, tin tức, video, diễn đàn và các dịch vụ liên quan đến lĩnh vực này. Securityzone.vn là một trong những cộng đồng IT lớn và uy tín tại Việt Nam, thu hút nhiều người quan tâm và tham gia. Securityzone.vn cũng là nơi để các chuyên gia, nhà nghiên cứu, sinh viên và người yêu thích an ninh mạng có thể trao đổi, học hỏi và chia sẻ kiến thức, kinh nghiệm và giải pháp về các vấn đề bảo mật trong thời đại số.

Quick Navigation

User Menu