Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Phần 1. Về CPU

Trong bài viết này, chúng ta sẽ nói về bộ đếm hiệu suất bộ nhớ truy cập ngẫu nhiên (RAM) trong vSphere.
Có vẻ như với bộ nhớ, mọi thứ đều rõ ràng hơn so với bộ xử lý: nếu các vấn đề về hiệu suất phát sinh trên máy ảo, thật khó để không nhận thấy chúng. Nhưng nếu chúng xuất hiện thì việc đối phó với chúng sẽ khó khăn hơn rất nhiều. Nhưng điều đầu tiên trước tiên.

Một chút lý thuyết

RAM của máy ảo được lấy từ bộ nhớ của máy chủ nơi máy ảo đang chạy. Điều này khá rõ ràng :). Nếu RAM của máy chủ không đủ cho tất cả mọi người, ESXi bắt đầu sử dụng các kỹ thuật thu hồi bộ nhớ. Nếu không, hệ điều hành VM sẽ gặp sự cố do lỗi truy cập RAM.

ESXi quyết định sử dụng kỹ thuật nào tùy thuộc vào tải RAM:

Tình trạng bộ nhớ

Biên giới

Hoạt động

Cao

400% phútMiễn phí

Sau khi đạt đến giới hạn trên, các trang bộ nhớ lớn sẽ được chia thành các trang nhỏ (TPS hoạt động ở chế độ tiêu chuẩn).

Trong sáng

100% phútMiễn phí

Các trang bộ nhớ lớn được chia thành các trang nhỏ, TPS bị ép buộc.

Mềm mại

64% phútMiễn phí

TPS + Bóng

Cứng

32% phútMiễn phí

TPS + Nén + Hoán đổi

Thấp

16% phútMiễn phí

Nén + Hoán đổi + Chặn

Nguồn

minFree là RAM cần thiết để trình ảo hóa chạy.

Tính đến ESXi 4.1, minFree đã được sửa theo mặc định - 6% RAM của máy chủ (tỷ lệ phần trăm có thể được thay đổi thông qua tùy chọn Mem.MinFreePct trên ESXi). Trong các phiên bản sau, do sự tăng trưởng của bộ nhớ trên máy chủ, minFree bắt đầu được tính toán dựa trên dung lượng bộ nhớ của máy chủ chứ không phải dưới dạng giá trị phần trăm cố định.

Giá trị minFree (mặc định) được tính như sau:

Phần trăm bộ nhớ dành riêng cho minFree

Phạm vi bộ nhớ

6%

0-4GB

4%

4-12GB

2%

12-28GB

1%

Bộ nhớ còn lại

Nguồn

Ví dụ: đối với máy chủ có RAM 128 GB, giá trị MinFree sẽ như sau:
MinFree = 245,76 + 327,68 + 327,68 + 1024 = 1925,12 MB = 1,88 GB
Giá trị thực tế có thể khác nhau vài trăm MB, tùy thuộc vào máy chủ và RAM.

Phần trăm bộ nhớ dành riêng cho minFree

Phạm vi bộ nhớ

Giá trị cho 128 GB

6%

0-4GB

245,76 MB

4%

4-12GB

327,68 MB

2%

12-28GB

327,68 MB

1%

Bộ nhớ còn lại (100 GB)

1024 MB

Thông thường, đối với trạng thái sản xuất, chỉ có trạng thái Cao mới được coi là bình thường. Đối với các băng ghế thử nghiệm và phát triển, trạng thái Clear/Soft có thể được chấp nhận. Nếu RAM trên máy chủ nhỏ hơn 64% MinFree thì các máy ảo chạy trên đó chắc chắn đang gặp vấn đề về hiệu suất.

Ở mỗi trạng thái, một số kỹ thuật khôi phục bộ nhớ nhất định được sử dụng, bắt đầu từ TPS, vốn hầu như không ảnh hưởng đến hiệu suất VM, cho đến Hoán đổi. Tôi sẽ kể cho bạn nghe nhiều hơn về họ.

Chia sẻ trang minh bạch (TPS). Nói một cách đại khái, TPS là việc sao chép các trang RAM của máy ảo trên máy chủ.

ESXi tìm kiếm các trang RAM máy ảo giống hệt nhau bằng cách đếm và so sánh tổng giá trị băm của các trang, đồng thời loại bỏ các trang trùng lặp, thay thế chúng bằng các tham chiếu đến cùng một trang trong bộ nhớ vật lý của máy chủ. Kết quả là mức tiêu thụ bộ nhớ vật lý giảm và có thể đạt được một số đăng ký vượt mức bộ nhớ mà hầu như không ảnh hưởng đến hiệu suất.

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức
Nguồn

Cơ chế này chỉ hoạt động đối với các trang bộ nhớ có kích thước 4 KB (trang nhỏ). Trình ảo hóa thậm chí không cố gắng sao chép các trang có kích thước 2 MB (trang lớn): cơ hội tìm thấy các trang giống hệt nhau có kích thước này là không lớn.

Theo mặc định, ESXi phân bổ bộ nhớ cho các trang lớn. Việc chia các trang lớn thành các trang nhỏ bắt đầu khi đạt đến ngưỡng trạng thái Cao và bắt buộc khi đạt đến trạng thái Xóa (xem bảng trạng thái của bộ ảo hóa).

Nếu muốn TPS bắt đầu hoạt động mà không cần đợi RAM máy chủ đầy thì cần thiết lập giá trị trong Advanced Options ESXi “Mem.AllocGuestLargePage” về 0 (mặc định 1). Khi đó việc cấp phát các trang bộ nhớ lớn cho máy ảo sẽ bị vô hiệu hóa.

Kể từ tháng 2014 năm XNUMX, trong tất cả các bản phát hành ESXi, TPS giữa các máy ảo bị tắt theo mặc định, vì một lỗ hổng được phát hiện về mặt lý thuyết cho phép một máy ảo truy cập vào RAM của một máy ảo khác. Chi tiết tại đây. Tôi chưa tìm thấy thông tin về việc triển khai thực tế việc khai thác lỗ hổng TPS.

Chính sách TPS được kiểm soát thông qua tùy chọn nâng cao “Mem.ShareForceSalting” trên ESXi:
0 - TPS liên VM. TPS hoạt động trên các trang của các máy ảo khác nhau;
1 – TPS dành cho máy ảo có cùng giá trị “sched.mem.pshare.salt” trong VMX;
2 (mặc định) – TPS nội VM. TPS hoạt động cho các trang bên trong VM.

Việc vô hiệu hóa các trang lớn và bật TPS Inter-VM trên băng ghế thử nghiệm chắc chắn là hợp lý. Điều này cũng có thể được sử dụng cho các giá đỡ có số lượng lớn máy ảo tương tự. Ví dụ: trên giá đỡ có VDI, mức tiết kiệm bộ nhớ vật lý có thể lên tới hàng chục phần trăm.

Bong bóng bộ nhớ. Ballooning không còn là một kỹ thuật vô hại và minh bạch đối với hệ điều hành VM như TPS. Nhưng nếu sử dụng đúng cách, bạn có thể sống và thậm chí làm việc với Ballooning.

Cùng với Vmware Tools, một trình điều khiển đặc biệt có tên Balloon Driver (còn gọi là vmmemctl) được cài đặt trên VM. Khi hypervisor bắt đầu hết bộ nhớ vật lý và chuyển sang trạng thái Soft, ESXi sẽ yêu cầu VM lấy lại RAM chưa sử dụng thông qua Balloon Driver này. Ngược lại, trình điều khiển hoạt động ở cấp hệ điều hành và yêu cầu bộ nhớ trống từ nó. Trình ảo hóa xem trang nào của bộ nhớ vật lý mà Balloon Driver đã chiếm giữ, lấy bộ nhớ từ máy ảo và trả về máy chủ. Không có vấn đề gì với hoạt động của HĐH, vì ở cấp độ HĐH, bộ nhớ bị Balloon Driver chiếm giữ. Theo mặc định, Balloon Driver có thể chiếm tới 65% bộ nhớ VM.

Nếu VMware Tools chưa được cài đặt trên VM hoặc Ballooning bị tắt (tôi không khuyên bạn nên làm vậy, nhưng có KB:), trình ảo hóa ngay lập tức chuyển sang các kỹ thuật nghiêm ngặt hơn để loại bỏ bộ nhớ. Kết luận: đảm bảo rằng VMware Tools có trên VM.

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức
Có thể kiểm tra hoạt động của Balloon Driver từ HĐH thông qua VMware Tools.

Nén bộ nhớ. Kỹ thuật này được sử dụng khi ESXi đạt trạng thái Hard. Đúng như tên gọi, ESXi cố gắng nén một trang RAM 4KB thành 2KB, từ đó giải phóng một số dung lượng trong bộ nhớ vật lý của máy chủ. Kỹ thuật này làm tăng đáng kể thời gian truy cập vào nội dung của các trang VM RAM, vì trang này trước tiên phải được giải nén. Đôi khi không phải tất cả các trang đều có thể được nén và quá trình này mất một chút thời gian. Vì vậy, kỹ thuật này không hiệu quả lắm trong thực tế.

Hoán đổi bộ nhớ. Sau một giai đoạn Nén bộ nhớ ngắn, ESXi gần như chắc chắn (nếu máy ảo chưa di chuyển sang máy chủ khác hoặc chưa bị tắt) sẽ chuyển sang Hoán đổi. Và nếu còn rất ít bộ nhớ (Trạng thái thấp), thì trình ảo hóa cũng ngừng phân bổ các trang bộ nhớ cho VM, điều này có thể gây ra sự cố trong hệ điều hành khách của VM.

Đây là cách Hoán đổi hoạt động. Khi bạn bật máy ảo, một tệp có phần mở rộng .vswp sẽ được tạo cho máy ảo. Nó có kích thước tương đương với RAM không được đặt trước của VM: đây là sự khác biệt giữa bộ nhớ được định cấu hình và bộ nhớ dành riêng. Khi Swapping đang chạy, ESXi hoán đổi các trang bộ nhớ máy ảo vào tệp này và bắt đầu làm việc với nó thay vì bộ nhớ vật lý của máy chủ. Tất nhiên, bộ nhớ “RAM” như vậy chậm hơn nhiều so với bộ nhớ thực, ngay cả khi .vswp được lưu trữ nhanh.

Không giống như Ballooning, khi các trang không sử dụng được lấy từ máy ảo, với các trang Hoán đổi được hệ điều hành hoặc ứng dụng bên trong máy ảo sử dụng tích cực có thể được chuyển sang đĩa. Kết quả là hiệu suất của VM giảm xuống mức đóng băng. VM chính thức hoạt động và ở mức tối thiểu nó có thể bị vô hiệu hóa đúng cách khỏi HĐH. Nếu bạn kiên nhẫn 😉

Nếu máy ảo đã chuyển sang Hoán đổi thì đây là tình huống khẩn cấp tốt nhất nên tránh nếu có thể.

Bộ đếm hiệu suất bộ nhớ máy ảo cơ bản

Vậy là chúng ta đã đi vào vấn đề chính. Để theo dõi trạng thái bộ nhớ của VM, có các bộ đếm sau:

hoạt động — hiển thị dung lượng RAM (KB) mà VM đã truy cập trong khoảng thời gian đo trước đó.

Sử dụng — giống như Active, nhưng tính theo phần trăm RAM được cấu hình của VM. Được tính bằng công thức sau: kích thước bộ nhớ được cấu hình máy ảo đang hoạt động.
Tương ứng, Mức sử dụng cao và Hoạt động không phải lúc nào cũng là dấu hiệu cho thấy các vấn đề về hiệu suất của VM. Nếu VM sử dụng nhiều bộ nhớ (ít nhất là truy cập vào nó), điều này không có nghĩa là không có đủ bộ nhớ. Đúng hơn, đây là lý do để xem xét những gì đang xảy ra trong HĐH.
Có một Cảnh báo tiêu chuẩn về việc sử dụng bộ nhớ cho máy ảo:

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Chia sẻ — dung lượng RAM VM được sao chép bằng TPS (trong một VM hoặc giữa các VM).

Cấp — dung lượng bộ nhớ vật lý của máy chủ (KB) được phân bổ cho VM. Bật chia sẻ.

Tiêu dùng (Được cấp - Được chia sẻ) - dung lượng bộ nhớ vật lý (KB) mà VM tiêu thụ từ máy chủ. Không bao gồm Chia sẻ.

Nếu một phần bộ nhớ VM được cung cấp không phải từ bộ nhớ vật lý của máy chủ mà từ tệp hoán đổi hoặc bộ nhớ được lấy từ VM thông qua Balloon Driver, thì lượng này sẽ không được tính đến trong Đã cấp và Đã sử dụng.
Giá trị Granted và Consumed cao là hoàn toàn bình thường. Hệ điều hành dần dần lấy bộ nhớ từ hypervisor và không trả lại. Theo thời gian, trong một máy ảo đang chạy tích cực, giá trị của các bộ đếm này sẽ đạt đến dung lượng bộ nhớ được định cấu hình và vẫn ở đó.

  nhận được gì — dung lượng VM RAM (KB), chứa số không. Bộ nhớ như vậy được bộ ảo hóa coi là trống và có thể được cấp cho các máy ảo khác. Sau khi hệ điều hành khách ghi nội dung nào đó vào bộ nhớ bằng XNUMX, nó sẽ chuyển sang Đã sử dụng và không quay trở lại.

Chi phí dự trữ — dung lượng RAM VM, (KB) được bộ ảo hóa dành riêng cho hoạt động của VM. Đây là một lượng nhỏ nhưng phải có sẵn trên máy chủ, nếu không VM sẽ không khởi động được.

Balloon — lượng RAM (KB) bị xóa khỏi VM bằng cách sử dụng Balloon Driver.

Nén — dung lượng RAM (KB) đã được nén.

Trao đổi — dung lượng RAM (KB), do thiếu bộ nhớ vật lý trên máy chủ, đã được chuyển sang đĩa.
Bộ đếm kỹ thuật thu hồi bóng và bộ nhớ khác bằng không.

Đây là giao diện của biểu đồ với Bộ đếm bộ nhớ của một máy ảo hoạt động bình thường với 150 GB RAM.

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Trong biểu đồ bên dưới, VM có vấn đề rõ ràng. Bên dưới biểu đồ, bạn có thể thấy rằng đối với máy ảo này, tất cả các kỹ thuật được mô tả để làm việc với RAM đều đã được sử dụng. Bóng cho máy ảo này lớn hơn nhiều so với Consumed. Trên thực tế, VM chết còn hơn sống.

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

ESXTOP

Đối với CPU, nếu chúng ta muốn đánh giá nhanh tình hình trên máy chủ cũng như động lực của nó trong khoảng thời gian tối đa 2 giây, chúng ta nên sử dụng ESXTOP.

Màn hình Bộ nhớ ESXTOP được mở bằng phím “m” và trông như thế này (các trường B,D,H,J,K,L,O được chọn):

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Các thông số sau đây sẽ được chúng tôi quan tâm:

Mem cam kết quá mức trung bình — giá trị trung bình của việc đăng ký vượt mức bộ nhớ trên máy chủ trong 1, 5 và 15 phút. Nếu nó trên XNUMX thì đây là lý do để xem xét những gì đang xảy ra, nhưng không phải lúc nào cũng là dấu hiệu của vấn đề.

Trong dòng PMEM/MB и VMKMEM/MB — thông tin về bộ nhớ vật lý của máy chủ và bộ nhớ khả dụng cho VMkernel. Trong số những điều thú vị ở đây, bạn có thể thấy giá trị minfree (tính bằng MB), trạng thái máy chủ trong bộ nhớ (trong trường hợp của chúng tôi là cao).

Trong hàng NUMA/MB bạn có thể thấy sự phân bổ RAM trên NUMA nút (ổ cắm). Trong ví dụ này, sự phân bổ không đồng đều, về nguyên tắc là không tốt lắm.

Sau đây là số liệu thống kê chung về máy chủ cho các kỹ thuật khôi phục bộ nhớ:

PSSHARE/MB - đây là số liệu thống kê TPS;

Hoán đổi/MB - Hoán đổi số liệu thống kê sử dụng;

ZIP/MB - thống kê nén trang bộ nhớ;

MEMCTL/MB - Thống kê sử dụng Balloon Driver.

Đối với các máy ảo riêng lẻ, chúng tôi có thể quan tâm đến thông tin sau. Mình đã giấu tên các VM để không gây nhầm lẫn cho khán giả :). Nếu số liệu ESXTOP giống với bộ đếm trong vSphere, tôi sẽ cung cấp bộ đếm tương ứng.

MEMSZ — dung lượng bộ nhớ được cấu hình trên VM (MB).
MEMSZ = GRANT + MCTLSZ + SWCUR + nguyên.

BAN CHO - Được cấp bằng MB.

TCHD - Hoạt động ở MByte.

MCTL? — liệu Balloon Driver có được cài đặt trên VM hay không.

MCTLSZ — Bóng tới MB.

MCTLGT — dung lượng RAM (MByte) mà ESXi muốn xóa khỏi VM thông qua Trình điều khiển Balloon (Memctl Target).

MCTLMAX — dung lượng RAM (MByte) tối đa mà ESXi có thể xóa khỏi VM thông qua Balloon Driver.

SWCUR — dung lượng RAM (MByte) hiện tại được phân bổ cho VM từ tệp Hoán đổi.

S.W.G.T. — dung lượng RAM (MByte) mà ESXi muốn cung cấp cho VM từ tệp Hoán đổi (Mục tiêu Hoán đổi).

Bạn cũng có thể xem thông tin chi tiết hơn về cấu trúc liên kết NUMA của VM thông qua ESXTOP. Để thực hiện việc này, chọn trường D, G:

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

NHN – NUMA nút nơi đặt VM. Tại đây, bạn có thể nhận thấy ngay vm rộng, không vừa với một nút NUMA.

NRMEM – VM lấy bao nhiêu megabyte bộ nhớ từ nút NUMA từ xa.

NLMEM – VM lấy bao nhiêu megabyte bộ nhớ từ nút NUMA cục bộ.

N%L – phần trăm bộ nhớ VM trên nút NUMA cục bộ (nếu nhỏ hơn 80%, có thể phát sinh vấn đề về hiệu suất).

Bộ nhớ trên hypervisor

Nếu bộ đếm CPU dành cho bộ ảo hóa thường không được quan tâm đặc biệt thì với bộ nhớ thì tình hình lại ngược lại. Mức sử dụng bộ nhớ cao trên máy ảo không phải lúc nào cũng chỉ ra vấn đề về hiệu năng, nhưng mức sử dụng bộ nhớ cao trên bộ ảo hóa sẽ kích hoạt các kỹ thuật quản lý bộ nhớ và gây ra sự cố về hiệu suất máy ảo. Bạn cần theo dõi các cảnh báo Sử dụng bộ nhớ máy chủ và ngăn chặn máy ảo truy cập vào Swap.

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

hủy hoán đổi

Nếu một máy ảo bị mắc kẹt trong Swap, hiệu suất của nó sẽ giảm đi rất nhiều. Dấu vết của Ballooning và nén nhanh chóng biến mất sau khi RAM trống xuất hiện trên máy chủ, nhưng máy ảo không vội quay lại từ Swap về RAM của máy chủ.
Trước ESXi 6.0, cách nhanh chóng và đáng tin cậy duy nhất để xóa VM khỏi Swap là khởi động lại (chính xác hơn là tắt/bật vùng chứa). Bắt đầu với ESXi 6.0, mặc dù không hoàn toàn chính thức nhưng một cách hiệu quả và đáng tin cậy để loại bỏ VM khỏi Swap đã xuất hiện. Tại một trong những hội nghị, tôi đã có thể nói chuyện với một trong những kỹ sư của VMware chịu trách nhiệm về Bộ lập lịch CPU. Ông xác nhận rằng phương pháp này khá hiệu quả và an toàn. Theo kinh nghiệm của chúng tôi, không có vấn đề gì với nó.

Các lệnh thực tế để loại bỏ VM khỏi Swap mô tả Duncan Epping. Tôi sẽ không lặp lại mô tả chi tiết mà chỉ đưa ra một ví dụ về cách sử dụng nó. Như bạn có thể thấy trong ảnh chụp màn hình, một thời gian sau khi thực hiện lệnh được chỉ định, Hoán đổi trên VM sẽ biến mất.

Phân tích hiệu suất VM trong VMware vSphere. Phần 2: Ký ức

Mẹo quản lý RAM trên ESXi

Cuối cùng, đây là một số mẹo giúp bạn tránh các vấn đề về hiệu suất máy ảo do RAM:

  • Tránh đăng ký quá mức RAM trong các cụm sản xuất. Bạn nên luôn có ~20-30% bộ nhớ trống trong cụm để DRS (và quản trị viên) có chỗ để điều động và máy ảo không chuyển sang Hoán đổi trong quá trình di chuyển. Ngoài ra, đừng quên giới hạn cho khả năng chịu lỗi. Thật khó chịu khi một máy chủ bị lỗi và VM được khởi động lại bằng HA, một số máy cũng chuyển sang Swap.
  • Trong cơ sở hạ tầng được hợp nhất cao, cố gắng KHÔNG tạo máy ảo có bộ nhớ lớn hơn một nửa bộ nhớ máy chủ. Điều này một lần nữa sẽ giúp DRS phân phối các máy ảo trên các máy chủ cụm mà không gặp bất kỳ sự cố nào. Tất nhiên, quy tắc này không phổ biến :).
  • Hãy chú ý đến Cảnh báo sử dụng bộ nhớ máy chủ.
  • Đừng quên cài đặt VMware Tools trên VM và đừng tắt Ballooning.
  • Hãy cân nhắc việc bật TPS liên VM và tắt các Trang lớn trong môi trường VDI và thử nghiệm.
  • Nếu máy ảo đang gặp sự cố về hiệu suất, hãy kiểm tra xem nó có đang sử dụng bộ nhớ từ nút NUMA từ xa hay không.
  • Loại bỏ máy ảo khỏi Swap càng nhanh càng tốt! Trong số những vấn đề khác, nếu VM ở trạng thái Hoán đổi, hệ thống lưu trữ sẽ gặp sự cố vì những lý do rõ ràng.

Đối với tôi đó là tất cả về RAM. Dưới đây là những bài viết liên quan dành cho những ai muốn đi sâu hơn. Bài viết tiếp theo sẽ được dành riêng cho storaj.

Liên kết hữu íchhttp://www.yellow-bricks.com/2015/03/02/what-happens-at-which-vsphere-memory-state/
http://www.yellow-bricks.com/2013/06/14/how-does-mem-minfreepct-work-with-vsphere-5-0-and-up/
https://www.vladan.fr/vmware-transparent-page-sharing-tps-explained/
http://www.yellow-bricks.com/2016/06/02/memory-pages-swapped-can-unswap/
https://kb.vmware.com/s/article/1002586
https://www.vladan.fr/what-is-vmware-memory-ballooning/
https://kb.vmware.com/s/article/2080735
https://kb.vmware.com/s/article/2017642
https://labs.vmware.com/vmtj/vmware-esx-memory-resource-management-swap
https://blogs.vmware.com/vsphere/2013/10/understanding-vsphere-active-memory.html
https://www.vmware.com/support/developer/converter-sdk/conv51_apireference/memory_counters.html
https://docs.vmware.com/en/VMware-vSphere/6.5/vsphere-esxi-vcenter-server-65-monitoring-performance-guide.pdf

Nguồn: www.habr.com

Thêm một lời nhận xét