Vì vậy, thực sự, chi phí ảo hóa là gì và khi nào tôi nên quan tâm?


16

Tôi đang tìm kiếm các quy tắc tốt để hiểu khi nào KHÔNG ảo hóa máy.

Ví dụ, tôi biết rằng một quy trình hoàn toàn gắn với CPU với mức sử dụng gần 100% có lẽ không phải là một ý tưởng tốt để ảo hóa, nhưng có ý nghĩa gì trong việc chạy thứ gì đó thúc đẩy CPU trong hầu hết thời gian là "số lượng đáng kể" (giả sử 40 hay 50%)?

Một ví dụ khác: nếu tôi ảo hóa 1000 máy, ngay cả khi chúng chỉ được sử dụng nhẹ hoặc vừa phải, có lẽ sẽ rất tệ nếu chạy tất cả trên một máy chủ chỉ có 4 lõi.

Ai đó có thể tóm tắt các gợi ý về ảo hóa dựa trên khối lượng công việc của máy hoặc số lượng máy khách tuyệt đối khi so sánh với tài nguyên máy chủ không?

Tôi thường ảo hóa trên các máy chủ Windows bằng VirtualBox hoặc VMWare, nhưng tôi cho rằng đây là một câu hỏi khá chung chung.


1
ngay cả với một số tác vụ bị ràng buộc bởi CPU cũng có một điểm để ảo hóa - cho phép người dùng gửi công việc tới các cụm vì hình ảnh VM cho phép họ kiểm soát tốt hơn nhiều so với môi trường mà các công việc chạy trong khả năng có thể chỉ với một trình lập lịch hàng loạt đơn giản.
Flexo

Nhưng tại một số điểm, việc lập lịch trình "thực thi VM" có vẻ như không cần thiết khi nó đã đủ khó để lên lịch cho các luồng trong một VM, đúng không?
kvista

Câu trả lời:


13

Hệ thống con đĩa. Đây thường là tài nguyên ít chia sẻ nhất. Bộ nhớ, tất nhiên, nhưng đó là một rõ ràng.

Giới hạn hệ thống con đĩa hoạt động theo cả hai cách. Nếu một hệ thống sử dụng nhiều đĩa I / O, các khách khác sẽ chậm lại. Nếu khách này đang trong quá trình sản xuất, nó có thể cần phản ứng nhanh với các truy vấn web. Điều này có thể rất bực bội và cũng là một lý do lớn tại sao không thuê phần cứng ảo. Bạn có thể giảm thiểu vấn đề này bằng cách sử dụng đĩa chuyên dụng.

Chỉ sử dụng bộ nhớ 512 MB trong Khách đặt tất cả bộ nhớ cache trên máy chủ. Và nó không chia đều cho khách.

Đừng lo lắng về CPU IO. Theo cách này, ảo hóa rất hiệu quả, thường liên quan vì chỉ có nhiều quá trình chạy trên cùng một hệ thống. Tôi hiếm khi thấy các hệ thống nhiều xeon chạy 100% trên CPU.

chỉnh sửa: lỗi chính tả


3
đĩa nặng I / O yêu cầu sẽ là # 1 lý do để không ảo hóa - đó là tài nguyên ảnh hưởng nặng nhất bởi ảo hóa hình phạt, xem codinghorror.com/blog/2006/10/...
Jeff Atwood

Cảm ơn - cả hai ý kiến ​​đều hữu ích. Chỉ cần tự hỏi nếu có ai biết tại sao sử dụng đĩa cao là có vấn đề để ảo hóa? Tại sao các kỹ sư ảo hóa sẽ bỏ qua vấn đề tương đối cơ bản đó? Hay về cơ bản nó phức tạp hơn ảo hóa CPU?
kvista

Lưu ý - @Jeff, tôi đang đọc bài đăng trên blog năm 2006 của bạn và tôi cho rằng điều đó sẽ giải thích tại sao tốt hơn (nghĩa là đặt trước trục chính), nhưng câu hỏi của tôi đối với các nhà thiết kế / triển khai ảo hóa vẫn giống nhau - về cơ bản vấn đề này là ảo hóa Cách ảo hóa CPU là gì?
kvista

3
Chỉ có rất nhiều tìm kiếm một ổ cứng có thể làm. Trong 5ms ổ cứng, đây sẽ là 200 lần tìm kiếm. Và, trên cơ sở chung, khi một hệ điều hành sao chép các tệp hoặc quét các thư mục, nó luôn sử dụng 100% đĩa io. Trong thời gian này, tất cả các yêu cầu nhỏ từ đĩa đều bị trì hoãn và có rất nhiều yêu cầu. Ngoài ra bộ đệm hệ thống tập tin bị lãng phí vì bản sao. Người ta có thể nói khái niệm hệ điều hành làm việc của chúng tôi dựa trên một ổ cứng nhàn rỗi.
Antti Rytsölä

1
Cảm ơn. Tôi đoán sẽ rất thú vị khi xem liệu SSD có thay đổi phương trình này hay không. Nhưng bây giờ chúng ta đang đi quá xa vào chế độ thảo luận. Tôi hiểu rồi - cảm ơn tất cả.
kvista

15

Những thứ mà tôi sẽ không bao giờ đặt trong VM:

  • Bất cứ thứ gì sử dụng phần cứng cụ thể không thể ảo hóa: thường là đồ họa, khá nhiều mô-đun bảo mật phần cứng, bất cứ thứ gì có trình điều khiển tùy chỉnh (ví dụ như trình điều khiển mạng mục đích đặc biệt).

  • Hệ thống có vấn đề về giấy phép. Một số phần mềm tính phí cho mỗi CPU hoặc lõi vật lý, bất kể bạn đã phân bổ cho VM bao nhiêu. Bạn sẽ bị kiểm toán nếu bạn có phần mềm được cấp phép cho một lõi chạy trong máy ảo trên máy chủ 32 lõi.

Những điều mà tôi sẽ không khuyến khích khi đưa vào VM:

  • Phần mềm đã nỗ lực sử dụng tất cả các tài nguyên trong phần cứng hàng hóa. Các máy hoạt động như một phần của nỗ lực "dữ liệu lớn" như hadoop thường được thiết kế để chạy trên kim loại trần.

  • Bất cứ điều gì sẽ được tinh chỉnh để sử dụng tài nguyên. Khi bạn thực sự bắt đầu điều chỉnh cơ sở dữ liệu, các máy ảo tranh giành tài nguyên sẽ thực sự gây ra khó khăn trong công việc.

  • Bất cứ điều gì đã có một nút cổ chai lớn. Nó đã không chơi tốt với chính nó, nó sẽ không chơi tốt với những người khác.

Có một số điều khá tuyệt vời khi đưa vào VM:

  • Bất cứ điều gì dành khá nhiều thời gian nhàn rỗi. Các máy chủ tiện ích như thư và DNS gặp khó khăn khi tạo đủ tải trên phần cứng hiện đại để đảm bảo các máy chủ chuyên dụng.

  • Các ứng dụng không tự mở rộng quy mô (hoặc dễ dàng). Mã di sản khá thường xuyên rơi vào thể loại này. Nếu ứng dụng không mở rộng để chiếm máy chủ, hãy sử dụng nhiều máy chủ ảo nhỏ.

  • Các dự án / ứng dụng bắt đầu nhỏ nhưng phát triển. Việc thêm tài nguyên vào VM dễ dàng hơn nhiều (cũng như chuyển sang phần cứng mới hơn, lớn hơn) thay vì bắt đầu bằng kim loại trần.

Ngoài ra, tôi không chắc liệu bạn có phóng đại về việc đưa một số lượng lớn VM vào một máy chủ không, nhưng nếu bạn đang cố gắng cho một tỷ lệ VM: HW lớn, bạn có thể muốn xem xét ESX, Xen, KVM thay thế. Bạn sẽ có giá tốt hơn nhiều so với sử dụng VMware hoặc virtualbox trên Windows.


1
+1 ý kiến ​​được tổ chức rất hữu ích - cảm ơn!
kvista

Thêm một nhận xét - ngay cả khi tôi sử dụng ESX, v.v. Tôi cho rằng tại một thời điểm nào đó không có ý nghĩa gì trong việc đưa máy X lên máy chủ lõi Y. Quy tắc tốt của ngón tay cái là gì? Tôi giả sử ảo hóa s / w giấy trắng ở đâu đó phải giải quyết vấn đề này, nhưng thật đáng buồn là tôi không thể dễ dàng tìm thấy nó.
kvista

1
Đối với VMware, bạn có thể bắt đầu tại đây: vmware.com/tĩ/whyvmware/calculator
Cakemox

Để tham khảo: theo liên kết VMWare ở trên, bạn có thể định cấu hình lên tới 30 VM cho mỗi CPU. Mặc định là 6 VM cho mỗi CPU.
Alex Yursha

4

Có hai điểm để thực hiện ảo hóa.

  • nút cổ chai
  • thi đua

Trên các nút cổ chai được chia sẻ, ai khác là trên cùng một sắt? Nếu bạn sống cùng trong một môi trường ảo hóa, bạn rất phụ thuộc vào đối tác lưu trữ trung thực với bạn.

Tôi nghĩ rằng câu hỏi chính cho hiệu năng thô (đặc biệt là tính tương tác) để hỏi là phần nào của hệ thống ảo hóa được mô phỏng. Điều này khác nhau tùy thuộc vào thiết lập. Đĩa và mạng là những ứng cử viên điển hình. Theo nguyên tắc thông thường, việc mô phỏng sẽ nhân đôi "chi phí" hiệu năng của việc thực hiện một hành động, do đó, bất kỳ thời gian trễ phần cứng nào cũng phải được tính gấp đôi và bất kỳ số lượng nào cũng phải giảm đi một nửa.


1
những con số tôi thấy là CPU ở mức 96-97%, mạng ở mức 70-90% và đĩa ở mức 40-70% (bằng kim loại trần)
Jeff Atwood

1
+1 quy tắc nhận xét ngón tay cái là hữu ích.
kvista

2

Cuối cùng, bất kỳ tải hiệu suất cao không nên được ảo hóa. Hiệu suất quá mức của ảo hóa là không tầm thường. Xem kết quả kiểm tra của tôi ở đây:

http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/

OTOH, nếu bạn đang tìm cách hợp nhất một số máy hầu như không hoạt động mọi lúc, ảo hóa là con đường phía trước.


1

Câu trả lời tốt từ anttiR.

Ngoài ra, thời gian hệ thống quan trọng. Tôi chỉ tìm ra tha thối Hyper-V (vm chậm tụt lại phía sau, tất cả các hệ điều hành hiện đại trong vm đều làm điều đó, được đồng bộ hóa thường xuyên) không hoạt động tốt với một số ứng dụng quan trọng mà tôi đang phát triển. Thêm vào đó, tôi sẽ sử dụng cpu "rất nhiều" ở đó và lên kế hoạch để có được một máy 12 lõi chỉ dành cho ứng dụng đó trong sản xuất.


Asterisk là một ứng dụng như vậy. Bạn nhận được một số điều rất thú vị xảy ra trong các cuộc gọi hội nghị khi trực quan hóa.
Ryaner

Tôi gặp vấn đề với độ ổn định của đồng hồ khi ghi dữ liệu;) Cảm ơn trời tôi nhận được dấu thời gian đáng tin cậy từ nguồn cấp dữ liệu, nhưng tìm hiểu xem có vấn đề mạng nào không khi đồng hồ hệ thống không ổn định.
TomTom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.