Ảo hóa cho máy tính hiệu năng cao
Hồ Đức Chung
Tóm tắt
Những yêu cầu đặc biệt cho máy tính hiệu năng cao (HPC) thường không phù hợp với các giả định và các thuật toán được cung cấp bởi các hệ điều hành (OS) cũ cho hỗn hợp các khối lượng công việc chung. Trong khi đó giàu đặc tính và ứng dụng, hệ điều hành (OS) cho phép các cấu hình phần cứng linh hoạt và chi phí thấp, phát triển nhanh chóng, gỡ lỗi và kiểm tra linh hoạt, sự không phù hợp xảy ra ở chi phí - thường xuyên làm giảm hiệu suất cho các ứng dụng HPC.
Tính sẵn sàng có mặt khắp nơi của việc hỗ trợ ảo hoá trong tất cả các kiến trúc phần cứng liên quan cho phép chương trình và các mô hình thực hiện mới cho các ứng dụng HPC mà không mất đi sự thoải mái và hỗ trợ của các môi trường ứng dụng và hệ điều hành hiện có. Trong bài viết này, sẽ thảo luận về các xu hướng, động lực và các vấn đề trong ảo hóa phần cứng, nhấn mạnh vào giá trị của chúng trong môi trường HPC.
1. Giới thiệu
Các yêu cầu của máy tính hiệu năng cao (HPC) trên hệ điều hành (OS) khác biệt đáng kể so với khối lượng công việc của máy chủ và máy trạm thông thường. Các ứng dụng HPC trong lịch sử đã đẩy các giới hạn về hiệu suất CPU và kích thước bộ nhớ để chạy các kích thước vấn đề lớn hơn bao giờ hết. Việc ghép kênh không gian và thời gian - được cung cấp bởi ảo hoá phần cứng - thì không quan trọng đối với người dùng HPC. Trong bài viết này, sẽ lập luận rằng việc ảo hóa cung cấp các lợi ích khác như chuyên môn hóa các hệ điều hành HPC trong khi vẫn duy trì tính tương thích kế thừa của hệ thống.
Với việc ảo hoá, nhiều hệ điều hành có thể cùng tồn tại an toàn trên một máy chủ vật lý. Máy được ghép kênh bởi một hạt nhân đặc quyền nhỏ, thông thường được gọi là một trình giám sát ảo hóa hoặc máy ảo (VMM), cung cấp ảnh của một hoặc nhiều máy thật. Trong khi vào những đầu năm 1970 [5, 14]. Các máy ảo gần đây đã có sự chú ý đáng kể cho việc hợp nhất máy chủ trong các trung tâm dữ liệu. Hợp nhất các máy chủ được sử dụng rất nhiều giúp giảm đáng kể chi phí phần cứng và bảo trì. Các thiết bị ảo hóa và cư trú trực tiếp các hệ điều hành đang chạy tách rời việc cài đặt phần mềm khỏi cấu hình phần cứng vật lý.
Sự cùng tồn tại của các phiên bản khác nhau của hệ điều hành tránh sự không tương thích, giảm chi phí kiểm tra và nâng cấp và loại bỏ các sự cố với các gói phần mềm xung đột. Trong khi việc hợp nhất của ảo hóa ít liên quan đến khối lượng công việc HPC, ảo hóa cho phép chuyên môn hóa các hệ điều hành với sự kiểm soát gần như toàn bộ tài nguyên phần cứng. Bộ ảo hóa ghép kênh một cách an toàn các tài nguyên phần cứng của máy vật lý nhưng để lại phân bổ tài nguyên phần cứng cụ thể cho hệ điều hành trong máy ảo. Do đó, nhiều hệ điều hành có khả năng rất khác nhau có thể cùng tồn tại. Các OS này, chuyên dùng cho khối lượng công việc cụ thể, còn được gọi là HĐH thư viện.
Hình 1. Kiến trúc tổng quan của một ứng dụng HPC cùng tồn tại với một hệ điều hành cũ
Sự cùng tồn tại với sự can thiệp tối thiểu này là giá trị chính của ảo hóa cho HPC. Một ứng dụng HPC hiện tại có thể bỏ qua các cơ chế và thuật toán hệ điều hành cũ và có thể hoạt động độc lập và sử dụng các tối ưu hóa dành riêng cho phần cứng như các siêu trang (super-pages). Tuy nhiên, việc định vị với các OS cũ cho phép ứng dụng HPC sử dụng các dịch vụ được chọn thuận tiện (được chỉ ra như Hình 1). Các máy ảo có thể giao tiếp thông qua cơ chế giao tiếp có chi phí thấp và độ trễ thấp được cung cấp bởi bộ ảo hóa hoặc chia sẻ các phần của bộ nhớ vật lý.
Ví dụ, rất nhiều thiết bị phần cứng được sử dụng trong các máy trạm chi phí thấp đòi hỏi số lượng trình điều khiển thiết bị đủ đa dạng. Hỗ trợ trên cơ sở một lần cho các ứng dụng cồng kềnh chuyên biệt nếu không khả thi. Ở đây, một hệ điều hành kế thừa được tạo ra có thể đóng vai trò là nhà cung cấp quyền truy cập thiết bị với chi phí tài nguyên tổng thể tối thiểu [13]. Các ứng dụng HPC yêu cầu dịch vụ OS truyền thống hoặc không quan trọng, chẳng hạn như quyền truy cập vào hệ thống tệp, phương tiện gỡ lỗi hoặc ngăn xếp TCP/IP có thể chuyển tiếp tương tự các yêu cầu đó. Nguyên mẫu PROSE [6] là một ví dụ về cấu trúc hệ thống như vậy.
2. Năng suất
Theo nhiều cách, ảo hóa có thể tăng cường năng suất trong việc phát triển và thử nghiệm các ứng dụng và hệ thống HPC. Với sự ủy quyền, trình ảo hóa có thể cho phép một VM theo dõi trạng thái (bao gồm bộ nhớ), ngắt và liên lạc (bao gồm cả các cuộc gọi đến bộ ảo hóa) của một VM khác, để gỡ lỗi hoặc phân tích hiệu suất. Bởi vì mã hướng nội này chạy bên ngoài VM đang được theo dõi, nó có thể nhìn vào bất kỳ đường dẫn nào trong OS hoặc ứng dụng, không có giới hạn có thể xảy ra khi có trình gỡ lỗi bên trong và chia sẻ trạng thái phần cứng, OS hoặc ứng dụng được gỡ lỗi. Điều này có thể đặc biệt có lợi khi phát triển hoặc sử dụng thư viện OS tối thiểu chuyên biệt cho một ứng dụng HPC cụ thể, được đề cập ở trên [11].
Các trình ảo hóa có thể cung cấp một cụm máy ảo, một cho mỗi nút trong một cấu hình cụ thể của ứng dụng HPC sử dụng mô hình lập trình cụm như MPI. Các VM có thể được phân bổ trên các nút thực ít hơn, thậm chí một nút duy nhất, để kiểm tra ở quy mô thực tế nhưng với ít tài nguyên hơn. Ảo hóa cho phép thử nghiệm trên máy được sử dụng để sản xuất, chỉ sử dụng cho những nguồn tài nguyên khiêm tốn, đồng thời với các ứng dụng sản xuất đang sử dụng hầu hết các tài nguyên. Việc chuyển một ứng dụng từ thử nghiệm sang sản xuất chỉ là vấn đề phân bổ nguồn lực thực sự đầy đủ đến các nút ảo (VM) được sử dụng để thực thi ứng dụng. Năng suất cũng có thể được tăng cường bằng cách sử dụng một cụm ảo, chạy nhiều bản sao OS và ứng dụng, để đạt được tỷ lệ trong một ứng dụng gốc được viết cho một hệ điều hành không thể mở rộng, tránh viết lại cho OS khác. Đây là một động lực chính của hệ thống [3].
Việc tách rời phần cứng và hệ điều hành có thể làm giảm đáng kể chu kỳ khởi động lại của hệ thống. Việc “khởi động lại ảo” tránh được độ trễ của việc khởi tạo lại phần cứng bằng BIOS [4]. Một ảnh VM được khởi động và đóng băng có thể được chuyển đến tất cả các nút trong một cụm và giảm đáng kể thời gian khởi động của hệ thống. Tương tự, thay đổi ảnh VM sang một hệ điều hành và ứng dụng khác không áp đặt độ trễ khởi tạo phần cứng.
3. Hiệu suất
Ảo hóa làm tăng hai vấn đề về hiệu năng: Chi phí ảo hóa và lợi ích hiệu suất mà nó mang lại. Các phát triển phần cứng và phần mềm gần đây đã được thúc đẩy ít nhất một phần để giảm chi phí ảo hóa. Các bộ vi xử lý phổ biến nhất hiện nay, bao gồm Intel [9, 10], AMD [1], và IBM [7], tất cả có những đặc điểm phần cứng để hỗ trợ ảo hóa và giảm chi phí hiệu suất của chính nó. Phần mềm ảo hóa được sử dụng bởi Xen [2] và IBM [8], tìm kiếm giao diện ảo hóa hiện tại, ví dụ để chỉ định bản dịch địa chỉ bộ nhớ, có chức năng tương đương nhưng ít tốn kém hơn về hiệu năng để thực hiện ảo hóa chính xác phần cứng tương tự, ví dụ các bảng trang (page tables). Phần mềm tiền ảo hóa [12] là một kỹ thuật mã hóa OS bán tự động để nó có thể được điều chỉnh cho một trình ảo hóa cụ thể tại thời điểm tải nhưng vẫn tương thích với phần cứng thực.
Hiệu năng của các ứng dụng HPC có thể được hưởng lợi từ ảo hóa theo nhiều cách. Ảo hóa tạo điều kiện cho các OS chuyên dụng được tối ưu hóa hiệu suất cho các lớp ứng dụng HPC, như đã thảo luận phía trên. Một trình ảo hóa có thể đảm bảo phân bổ tài nguyên cho VM, chẳng hạn như một phân vùng cố định của bộ nhớ thực, tỷ lệ phần trăm cố định của chu kỳ CPU hoặc độ trễ tối đa để làm gián đoạn mã xử lý cho VM thời gian thực. Các nút ảo (VM) của một cụm ảo có thể được lên lịch để chạy đồng thời, trong các nút thực khác nhau hoặc sử dụng các lõi xử lý khác nhau của một hoặc một vài nút thực. Lập lịch nhóm này cho phép một cụm ứng dụng HPC, trong khi chạy, giao tiếp giữa các nút trong thời gian thực, vì nó không có ảo hóa, điều này có thể rất quan trọng đối với tiến trình chuyển tiếp hiệu quả.
4. Độ tin cậy và tính sẵn sàng
Do cách ly VM, lỗi phần cứng hoặc phần mềm, như trong một lõi bộ xử lý, bộ nhớ, OS hoặc ứng dụng, chỉ ảnh hưởng trực tiếp đến một VM, trừ khi chính nhà cung cấp dịch vụ ảo hóa bị lỗi. Nếu máy ảo bị ảnh hưởng không thể tự phục hồi và thực sự bị lỗi, thì tài nguyên phần cứng không bị lỗi đó có thể được thu hồi rõ ràng bởi trình ảo hóa và được sử dụng để khởi động lại máy ảo bị lỗi hoặc bởi các VM khác. Các VM khác không nhận thức được sự cố trừ khi chúng có sự phụ thuộc giao tiếp vào VM bị ảnh hưởng, nhưng chúng có thể chạy chậm hơn nếu chia sẻ lõi xử lý bị lỗi. Sự cô lập lỗi này giúp tăng độ tin cậy của hệ thống và tăng xác suất hoàn thành các ứng dụng HPC nhiều thời gian mà không cần bất kỳ nỗ lực đặc biệt nào của các OS chạy trong VM.
Khi được ủy quyền, theo yêu cầu hoặc định kỳ, cho phép một VM nắm bắt toàn bộ hệ điều hành và trạng thái ứng dụng của một VM khác. Vì đây là trạng thái tài nguyên được ảo hóa ở mức thấp, nên trạng thái này có thể được sử dụng để tạo một VM khác, với các tài nguyên thực tương đương nhưng khác nhau trong cùng một nút hoặc một nút thực khác và tiếp tục xử lý. Khả năng kiểm tra / khởi động lại này cho phép ưu tiên công việc có mức độ ưu tiên cao, cư trú giữa các nút làm việc trong một cụm để cân bằng tải và khởi động lại từ một điểm kiểm tra trước đó sau khi lỗi phần cứng hoặc phần mềm thoáng qua, nếu ứng dụng không hoạt động đối với việc khởi động lại như vậy. Phục hồi từ các lỗi phần cứng đặc biệt quan trọng đối với các tính toán dài.
Ưu tiên cho phép sử dụng mới, chẳng hạn như những gì có thể được gọi là HPC thời gian thực, trong đó một số lượng lớn các nút được ưu tiên trong một thời gian ngắn để tính toán một kết quả cần thiết ngay lập tức. Tất cả các trường hợp này tăng cường khả năng sẵn có của hệ thống, yêu cầu ít hoặc không cần nỗ lực trong OS hoặc ứng dụng và rất quan trọng đối với các ứng dụng HPC, bởi vì chúng ngăn ngừa làm mất tiến trình trong các ứng dụng HPC nhiều thời gian.
5. Bảo mật
Các thuộc tính cách ly và mã hướng nội VM đã thảo luận ở phần trước cung cấp một nền tảng để xây dựng các hệ thống an toàn. Nếu ảo hoá nhỏ vì nó chỉ thực hiện một vài lệnh ban đầu và dịch vụ, sau đó nó có thể đưa ra bằng chứng mạnh mẽ rằng nó thực hiện một đặc điểm kỹ thuật chính xác. Sau đó, cách ly VM và các thuộc tính hướng nội được ủy quyền có thể được tin cậy. Một VM bị cô lập có thể không có tương tác trái phép với phần mềm không phải trình ảo hóa khác đang chạy trên máy thật.
Nếu một chương trình đáng tin cậy được tải vào một VM bị cô lập bởi trình ảo hóa, sau đó các giao tiếp được xác định của nó với phần mềm khác được ủy quyền để giao tiếp với nó có thể được tin cậy. Một VM khác, nếu được ủy quyền để làm như vậy, có thể sử dụng mã hướng nội để kiểm tra trạng thái của VM, ví dụ để tìm kiếm virus. Mã hướng nội cũng có thể được sử dụng để liên tục theo dõi các liên lạc và trạng thái của VM, để xác minh sự độc lập hoạt động chính xác của nó. Hệ thống bảo mật rất quan trọng đối với các ứng dụng HPC mà các xử lý dữ liệu của chính phủ được phân loại.
6. Sự phức tạp phần mềm
Các hệ thống dựa trên sự ảo hoá hứa hẹn tái cấu trúc cơ bản phần mềm hệ thống mà có thể giảm thiểu độ phức tạp của phần mềm trong sự phát triển, kiểm thử, phân phối và bảo trì. Tuy nhiên, sự hứa hẹn này dựa trên giả sử thường thấy bộ ảo hóa sẽ ổn định hơn nhiều so với OS thông thường, với các phiên bản mới không thường xuyên thay đổi giao diện, bởi vì nó thực hiện một tập hợp trừu tượng và dịch vụ nhỏ.
Bởi vì một trình ảo hóa cho phép một số hệ điều hành và phiên bản khác nhau chia sẻ đồng thời các tài nguyên của một hệ thống thực, mỗi ứng dụng hoặc chương trình phần mềm trung gian có thể được phát triển cho chỉ một OS và phiên bản được coi là phù hợp nhất, thay vì cho mọi OS người dùng có thể mong muốn lý do khác. Điều này có tiềm năng làm giảm đáng kể chi phí phát triển và thử nghiệm phần mềm.
Chương trình ứng dụng hoặc phần mềm trung gian có thể được đóng gói với OS mà nó đã được thử nghiệm, để phân phối dưới dạng một đơn vị độc lập. Người dùng cài đặt gói kết hợp và không cần phải lo lắng về phiên bản tương thích giữa hệ điều hành và ứng dụng hoặc phần mềm trung gian. Sửa lỗi hệ điều hành chỉ áp dụng cho các gói kết hợp cụ thể và có thể gây ra các vấn đề ngoài ý muốn cho các phần mềm khác sử dụng cùng một hệ điều hành nhưng trong một gói khác. Chi phí bảo trì người dùng sẽ giảm, phần mềm sẽ trở nên ổn định hơn và sự ổn định này sẽ dẫn đến chất lượng phần mềm được cải thiện.
7. Những vấn đề nghiên cứu
Các hệ thống máy ảo đã tồn tại trong nhiều năm và các hệ thống vi hạt nhân, có phần giống nhau, cũng đã được nghiên cứu rộng rãi. Tuy nhiên, nhiều vấn đề thú vị và quan trọng vẫn xứng đáng với nỗ lực nghiêm túc và mang đến cơ hội đổi mới phần cứng và phần mềm sau đây có thể chỉ ra.
Các tóm tắt và dịch vụ tối thiểu thích hợp mà một máy ảo nên thực hiện ở trạng thái đặc quyền nhất để đạt được chi phí hiệu suất tối thiểu, chia sẻ an toàn, cách ly VM, chỉ thực thi chính sách, không gây ra sự cạn kiệt tài nguyên và là cơ sở để suy luận chính xác về tính chính xác.
Một trình ảo hóa có thể phục vụ như một lớp phần cứng, với các dịch vụ và sự độc lập về nền tảng đóng gói tất cả hoặc hầu hết các phụ thuộc nền tảng, yêu cầu một trình ảo hóa viết lại để đưa sang một bộ vi xử lý khác nhưng chỉ biên dịch lại phần mềm khác, trong khi cung cấp VM và OS của chúng đủ thấp đạt mức độ kiểm soát tài nguyên và hiệu suất.
Liệu ảo hóa có cho phép triển khai OS đầy đủ chức năng kết hợp thành hai thành phần: một hệ điều hành thư một thư viện OS nhỏ cung cấp một tập hợp con tối ưu hóa các dịch vụ quan trọng về hiệu năng cho một lớp ứng dụng HPC và chạy trong VM với ứng dụng, cộng với một hệ điều hành đầy đủ chức năng chạy trong một VM riêng và sử dụng tính năng mã hướng nội của VM đầu tiên để cung cấp tất cả các dịch vụ không quan trọng khác về hiệu năng.
Các nguyên tắc cốt lõi và các khả năng quan trọng mà một trình ảo hóa phải hỗ trợ cho HPC (và có khả thi để nâng cấp một trình ảo hóa hiện có như Xen), chẳng hạn như các trang lớn, lập lịch xác định và truy cập trực tiếp vào các thiết bị tự ảo hóa hiệu suất cao như Infiniband, trong khi bảo tồn các thuộc tính ảo hóa chủ yếu nhắm vào khối lượng công việc của lớp máy chủ, chẳng hạn như quyền ưu tiên và cư trú.
Những tính năng phần cứng bổ sung nào sẽ cải thiện hiệu suất hoặc chức năng của ảo hóa, đặc biệt là hỗ trợ các mục tiêu liên quan trong một số ván đề nghiên cứu trước đây.
8. Kết luận
Ảo hóa, ngày càng hấp dẫn đối với các hệ thống thương mại, được triển khai bởi một trình ảo hóa nhỏ chạy bên dưới lớp OS thông thường, có cùng tiềm năng mang lại lợi ích cho các ứng dụng HPC trong các khía cạnh của hệ điều hành linh hoạt, năng suất, hiệu suất, độ tin cậy, tính sẵn sàng, bảo mật và sự đơn giản. Một chương trình phong phú về các hoạt động nghiên cứu vẫn còn cho phép hiện thực hóa những lợi ích tiềm năng này.
Tài liệu tham khảo
[1] Advanced Micro Devices. AMD64 Virtualization Codenamed “Pacifica” Technology, Secure Virtual Machine Architecture Reference Manual, May 2005.
[2] P. Barham, B. Dragovic, K. Fraser, S. Hand, T. Harris, A. Ho, et al. Xen and the art of virtualization. In Proc. of the 19th ACM Symposium on Operating System Principles, Bolton Landing, NY, October 2003.
[3] Edouard Bugnion, Scott Devine, and Mendel Rosenblum. DISCO: Running commodity operating systems on scalable multiprocessors. In Proc. of the 16th ACM Symposium on Operating System Principles, pages 143–156, 1997.
[4] Sung-Eun Choi, Erik A. Hendriks, Ronald Minnich, Matthew J. Sottile, and Aaron Marks. Life with ed: A case study of a linuxBIOS/BProc cluster. In HPCS, pages 35–41, 2002.
[5] Robert P. Goldberg. Survey of virtual machine research. IEEE Computer Magazine, 7(6), 1974.
[6] Eric Van Hensbergen. P.R.O.S.E. paritioned reliable operating system environment. Submitted to ACM Operating System Review, April 2006.
[7] IBM. PowerPC Operating Environment Architecture, Book III, 2005.
[8] IBM Research, http://www.research.ibm.com/hypervisor/. The Research Hypervisor.
[9] Intel Corp. Intel Vanderpool Technology for IA-32 Processors (VT-x) Preliminary Specification, 2005.
[10] Intel Corp. Intel Vanderpool Technology for Intel Itanium Architecture (VT-i) Preliminary Specification, 2005.
[11] Samuel T. King, George W. Dunlap, and Peter M. Chen. Debugging operating systems with time-traveling virtual machines. In Proceedings of the
USENIX Annual Technical Conference (USENIX’05), April 2005.
[12] Joshua LeVasseur, Volkmar Uhlig, Matthew Chapman, Peter Chubb, Ben Leslie, and Gernot Heiser. Pre-virtualization: Slashing the cost of virtualization. Technical Report 2005-30, Fakult¨ at fur ¨ Informatik, Universit¨ at Karlsruhe (TH), November 2005.
[13] Joshua LeVasseur, Volkmar Uhlig, Jan Stoess, and Stefan G¨ otz. Unmodified device driver reuse and improved system dependability via virtual machines. In Proc. of the 6th Symposium on Operating Systems Design and Implementation, San Francisco, CA, December 2004.
[14] Gerald J. Popek and Robert P. Goldberg. Formal requirements for virtualizable third generation architectures. In Proc. of the Fourth Symposium on Operating System Principles, Yorktown Heights, New York, October 1973.