Thông thường, việc cài đặt ứng dụng dựa trên debian ổn định tại chỗ của chúng tôi chạy trong một máy ảo - điển hình là trong VMware ESXi. Trong trường hợp chung, chúng tôi không có khả năng hiển thị hoặc ảnh hưởng đến môi trường ảo hóa của họ và không có quyền truy cập vào ví dụ máy khách VMware vCenter hoặc tương đương. Tôi tập trung vào VMware ở đây, bởi vì đó là điều phổ biến nhất chúng ta thấy.
Chúng tôi muốn:
- Nói với quản trị viên VMware của khách hàng: Bạn có thể chạy ứng dụng của chúng tôi trong môi trường VMware ESX của bạn, miễn là nó đáp ứng các tiêu chí hiệu suất X, Y và Z.
- Có thể xác định xem các tiêu chí X, Y và Z trên thực tế có được đáp ứng liên tục hay không (ví dụ ngay bây giờ ), ngay cả trên một hệ thống đang chạy (chúng tôi không thể dừng ứng dụng của mình và chạy điểm chuẩn, và điểm chuẩn ban đầu sẽ không đủ, vì hiệu suất trong môi trường ảo thay đổi theo thời gian).
- Hãy tự tin rằng nếu các tiêu chí X, Y và Z được đáp ứng, chúng tôi sẽ có đủ tài nguyên CTNH ảo để chạy ứng dụng của chúng tôi với hiệu suất thỏa đáng.
Bây giờ X, Y và Z là gì?
Chúng ta đã thấy hết lần này đến lần khác, rằng khi có vấn đề về hiệu năng, vấn đề không nằm ở ứng dụng của chúng ta, mà là với môi trường ảo hóa. Ví dụ, một máy ảo khác sử dụng hàng tấn CPU, bộ nhớ hoặc SAN mà các đĩa được lưu trữ thực sự được sử dụng nhiều bởi một thứ khác ngoài ứng dụng của chúng tôi. Chúng tôi hiện không có cách nào để chứng minh hoặc bác bỏ điều đó.
Về mặt lý thuyết cũng có thể đôi khi ứng dụng của chúng ta chậm ... ;-)
Làm thế nào để xác định nguyên nhân gốc rễ của các vấn đề hiệu suất của chúng tôi: Môi trường ảo hoặc ứng dụng của chúng tôi?
Thông thường có 3 khu vực cho các vấn đề về hiệu năng CPU, Bộ nhớ và DISK I / O.
CPU
Trong vd
Và làm thế nào để đo lường xem chúng ta có thực sự có được điều đó không? Trong khi ứng dụng của chúng tôi đang chạy, có lẽ chúng ta có thể thấy rằng chúng tôi đang sử dụng CPU ở mức 212% trên 4 CPU. Đó có phải là do ứng dụng của chúng tôi hoạt động nhiều hay vì một VM khác trên cùng một máy chủ đang chạy một nhiệm vụ chuyên sâu về CPU và sử dụng tất cả CPU?
Bộ nhớ (Ballooning?)
Nếu chúng tôi yêu cầu cho ví dụ 16GB RAM, mà thường được cấu hình, nhưng vì phình to , chúng tôi thực sự chỉ có được 4GB, và ngạc nhiên, thực hiện ứng dụng của chúng tôi kém.
Người ta có thể hỏi các công cụ VMware về khinh khí cầu hiện tại, nhưng chúng tôi thấy rằng nó thường nói dối (hoặc ít nhất là không chính xác). Chúng ta đã thấy các ví dụ trong đó HĐH nghĩ rằng có 16GB tổng RAM, tổng bộ nhớ lưu trữ (RSS) của tất cả các quá trình là RAM 4GB, nhưng chỉ có 2GB RAM miễn phí, ngay cả khi các công cụ VMware cho chúng ta biết có 0 bóng: - (
Ngoài ra, chỉ cần thêm RSS với nhau là không hợp lệ, vì có thể dễ dàng chia sẻ RAM, ví dụ như bộ nhớ sao chép khi ghi nên 512MB + 512MB không nhất thiết có nghĩa là 1GB nhưng có thể có nghĩa là ít hơn. Vì vậy, người ta không thể đơn giản trừ RSS khỏi tất cả các quy trình để có được số đo dung lượng RAM miễn phí và từ đó phát hiện sự phình to một cách đáng tin cậy. Người ta có thể phát hiện một số trường hợp khinh khí cầu, nhưng có những trường hợp khác mà bóng bay có hiệu lực, nhưng không thể phát hiện được bằng phương pháp này.
Đĩa I / O
Tôi đoán rằng chúng ta có thể vẽ đồ thị theo thời gian số lượng đĩa đọc và ghi, số byte đọc và ghi và IO chờ%. Nhưng điều đó sẽ cho chúng ta một hình ảnh chính xác của I / O đĩa? Tôi tưởng tượng rằng nếu có một công cụ khai thác bitcoin chạy trong một máy ảo khác sử dụng tất cả CPU, thì% chờ đợi IO của chúng tôi sẽ tăng lên, ngay cả khi SAN bên dưới cho hiệu suất chính xác như nhau, đơn giản là vì tài nguyên CPU của chúng tôi bị hỏng và do đó IO chờ đợi ( được đo bằng% ) tăng lên.
Vì vậy, tóm lại, ngôn ngữ nào chúng ta có thể sử dụng để mô tả ví dụ như quản trị viên VMware, hiệu suất chúng ta cần, theo cách có thể di động và đo lường được?
"It runs fine with x, y, and z"
không đủ chính xác. Bạn cần có khả năng nói với khách hàng của mình chính xác những gì ứng dụng của bạn yêu cầu. Nếu họ cung cấp cho bạn các tài nguyên đó và ứng dụng hoạt động kém thì câu hỏi không phải là "What do we need from a resource perspective?"
, nhưng"Why is it performing poorly even though the proper resources have been allocated?"