VMXNET3 nhận kích thước bộ đệm và sử dụng bộ nhớ


12

Lý lịch

Chúng tôi đã có một sự cố trong đó một cụm chuyển đổi dự phòng Windows bị gián đoạn. Một khám nghiệm tử thi cho thấy nút bị "loại bỏ" như được mô tả trong bài viết này .

Gần đây chúng tôi đã di chuyển cụm này hoàn toàn vào môi trường VMware của chúng tôi và có vẻ như sự kiện được mô tả ở trên có thể là nguyên nhân của sự cố ngừng hoạt động.

Bài báo VMware KB liên quan về điều này nói về việc tăng cài đặt Small Rx BuffersRx Ring #1cài đặt, nhưng cảnh báo rằng việc tăng quá nhiều có thể làm tăng đáng kể chi phí bộ nhớ trên máy chủ.

Sau khi kiểm tra các Network Interface\Packets Received Discardedbộ đếm hiệu suất cho ~ 150 máy ảo Windows của chúng tôi, 22 vNIC trên 16 khách đã có một số gói bị loại bỏ.

Một số tiền đủ nhỏ mà tôi không lo lắng về việc đánh thuế các máy chủ có sử dụng bộ nhớ bổ sung, nhưng tôi muốn hiểu cách sử dụng bộ nhớ cho các cài đặt này và bộ nhớ đến từ đâu.

Câu hỏi

  1. Mối quan hệ giữa số lượng bộ đệm và kích thước vòng là gì?
  2. Làm thế nào để tính toán dung lượng bộ nhớ được sử dụng cho các giá trị đã cho của các cài đặt này?
  3. Vì các cài đặt này nằm trên chính NIC trong hệ điều hành khách, tôi cho rằng chúng là cài đặt trình điều khiển. Điều này khiến tôi nghĩ rằng RAM được sử dụng có thể là phân trang hoặc không phân trang.
    1. Điều này có đúng không?
    2. Nếu vậy, tôi có nên lo lắng về điều đó?
  4. Có những lo ngại tôi không tính đến ở đây?

Chúng tôi đang cố gắng xác định xem có một nhược điểm nào khi đặt các mức này ở mức tối đa của chúng trên các máy ảo bị ảnh hưởng hay không, ngoài việc sử dụng bộ nhớ máy chủ VMware. Ví dụ, nếu chúng ta tăng nguy cơ bộ nhớ nhóm bị cạn kiệt trong khách, chúng ta sẽ có xu hướng bắt đầu nhỏ hơn.

Một số (có lẽ là tất cả) những câu hỏi này có thể không cụ thể đối với VMware hoặc ảo hóa.


Tôi đã nhìn thấy những thứ thực sự dễ vỡ khi công cụ giảm tải TCP của NIC vật lý hoạt động sai và VM đang thể hiện hành vi kỳ quặc, có thể là một hướng dẫn bạn có thể theo dõi.
SpacemanSpiff

@SpacemanSpiff đáng để kiểm tra, nhưng chỉ có 16 VM trong số hơn 150 máy tính đang thể hiện hành vi. 16 cái đó được trải đều trên cụm 12 nút và tất cả chúng đều nhận được lưu lượng truy cập cao, đôi khi dường như là nguyên nhân gây ra các triệu chứng được mô tả trong bài viết KB. Một số trong số này là các cụm Windows để chúng không di chuyển với DRS, nếu không tôi có thể xem xét liệu tất cả các khách bị ảnh hưởng có hiển thị các gói bị rơi trong khi trên một máy chủ cụ thể trước khi bị tắt. Tôi sẽ kiểm tra lại và xem liệu tôi có thể tìm thấy bất kỳ mối tương quan nào không. Cảm ơn.
nghĩa tự do

Microbursting có lẽ, đây là phần cứng gì?
SpacemanSpiff

@SpacemanSpiff Các máy chủ IBM, một vài mô hình và phiên bản khác nhau, cũng không chắc chắn về các NIC nào, tôi có thể kiểm tra các chi tiết cụ thể vào ngày mai.
nghĩa tự do

Câu trả lời:


5

Mối quan hệ giữa số lượng bộ đệm và kích thước vòng là gì?

Chúng có liên quan, nhưng độc lập. "Ring" rx dùng để chỉ một bộ đệm trong bộ nhớ được sử dụng như một hàng đợi để truyền các gói mạng đến từ máy chủ (hypanneror) đến máy khách (Windows VM). Bộ nhớ được lưu trữ trong máy khách bởi trình điều khiển mạng và nó được ánh xạ vào bộ nhớ máy chủ.

Khi các gói mạng mới xuất hiện trên máy chủ, chúng sẽ được đặt vào bộ đệm có sẵn tiếp theo trong vòng. Sau đó, máy chủ kích hoạt IRQ trong máy khách mà tài xế khách phản hồi bằng cách lấy gói của anh ta ra khỏi vòng và gửi nó đến ngăn xếp mạng của HĐH khách, có lẽ sẽ gửi nó đến ứng dụng khách có ý định nhận nó. Giả sử các gói tin đến đủ chậm và trình điều khiển khách đang xử lý chúng đủ nhanh, phải luôn có một khe miễn phí trong vòng. Tuy nhiên, nếu các gói đến quá nhanh hoặc khách đang xử lý chúng quá chậm, vòng có thể bị đầy và các gói có thể bị hủy (như bạn đã thấy trong tình huống của mình).

Tăng kích thước vòng có thể giúp giảm thiểu vấn đề này. Nếu bạn tăng nó, nhiều khe sẽ có sẵn trong vòng một lần. Điều này phân biệt thành cài đặt thứ hai, "Bộ đệm Rx nhỏ", là tổng số lượng bộ đệm có sẵn có thể được sử dụng để lấp đầy các vị trí trong vòng. Cần phải có ít nhất nhiều bộ đệm như các khe trong vòng. Điển hình là bạn muốn nhiều hơn. Khi khách lấy bộ đệm ra khỏi vòng để đưa cho ngăn xếp mạng khách, có thể không phải lúc nào nó cũng được trả lại ngay cho tài xế. Nếu điều đó xảy ra, có bộ đệm dự phòng để lấp đầy vòng có nghĩa là bạn có thể đi lâu hơn mà không làm rơi gói tin.

Bộ đệm Rx # 1 / Bộ đệm Rx nhỏ được sử dụng cho các khung không phải là jumbo. Nếu bạn có cấu hình NIC mặc định, đó là vòng duy nhất sẽ được sử dụng.

Làm thế nào để tính toán dung lượng bộ nhớ được sử dụng cho các giá trị đã cho của các cài đặt này?

Giả sử bạn đang nói về các khung không phải jumbo, mỗi bộ đệm cần đủ lớn để lưu trữ toàn bộ gói mạng, khoảng 1,5kb. Vì vậy, nếu bạn có sẵn 8192 bộ đệm, thì sẽ sử dụng 12MB. Một vòng lớn hơn cũng sẽ sử dụng nhiều bộ nhớ hơn, nhưng các mô tả là nhỏ (byte), vì vậy nó thực sự là bộ đệm mà bạn phải lo lắng.

Vì các cài đặt này nằm trên chính NIC trong hệ điều hành khách, tôi cho rằng chúng là cài đặt trình điều khiển. Điều này khiến tôi nghĩ rằng RAM được sử dụng có thể là phân trang hoặc không phân trang.

Vâng, đó là một hồ bơi không phân trang. Nếu bộ đệm vòng được phân trang, nó có thể sẽ dẫn đến các gói bị rơi trong khi bộ đệm được phân trang lại.

Có những lo ngại tôi không tính đến ở đây?

Tôi không chắc điều này có liên quan đến tình huống của bạn, nhưng có thể đáng chú ý rằng một vòng lớn hơn sẽ làm tăng dấu chân bộ đệm của đường dẫn rx mạng. Trong microbenchmark, bạn sẽ thấy rằng một vòng lớn hơn thường làm tổn hại đến hiệu suất. Điều đó nói rằng, trong các ứng dụng thực tế, nếu một gói bị rơi, đó thường là một vấn đề lớn hơn so với mức tăng hiệu suất nhỏ trong các vụ nổ tốc độ.

Nguồn: Tôi đã làm việc tại VMware.


1
Cảm ơn Roger, câu trả lời đầu tiên tuyệt vời. Tôi đã không ở công ty này được một thời gian vì vậy vấn đề này đã được loại bỏ ra khỏi radar của tôi, nhưng để hoàn thiện, có vấn đề gì về việc sử dụng bộ nhớ để đặt chúng ở mức tối đa không? Bài viết KB làm cho nó có vẻ như bạn có thể sử dụng nhiều bộ nhớ theo cách đó nhưng có vẻ như số lượng sẽ khá nhỏ. Tôi hỏi điều này bởi vì nó cũng không rõ làm thế nào để kích thước các giá trị này ngoài thử nghiệm và lỗi, vì vậy có thể dễ dàng nhất để đặt chúng ở mức tối đa nếu không có / ít nhược điểm.
briantist

1
Re: sử dụng bộ nhớ, hai điều tôi sẽ lưu ý: 1) Nếu bạn không sử dụng khung jumbo, tôi đồng ý, dung lượng bộ nhớ ở cài đặt tối đa vẫn còn khá nhỏ. Nếu bạn đang sử dụng khung jumbo, kích thước bộ đệm là khoảng 9kb và do đó bạn đang sử dụng nhiều bộ nhớ hơn. 2) Dung lượng bộ nhớ khả dụng trong nhóm không phân trang nhỏ hơn tổng dung lượng bộ nhớ trên máy chủ. Tôi không phải là một chuyên gia ở đây nhưng liên kết này có một bản tóm tắt khá toàn diện về cách tính toán bộ nhớ khả dụng: blog.technet.microsoft.com/markrussinovich/2009/03/10/ Lỗi
Roger Jacobson

Tuyệt vời cảm ơn bạn. Tôi hy vọng câu trả lời này sẽ giúp được ai đó trong tương lai (có thể thậm chí sẽ là tôi nếu tôi gặp lại chuyện này!)
sáng lập

0

Tôi không có câu trả lời cho điểm 1-2-3 nhưng bạn có thể kiểm tra với trình điều khiển ảo của mình về cấu hình máy chủ Vmware. Nếu anh ấy là VCP, anh ấy sẽ hiểu thứ :)

Bạn thực sự phải kiểm tra máy chủ của mình vì các vấn đề về cửa sổ có thể là do máy chủ không có trong máy khách.

Có nhiều tính năng phần cứng có thể giải thích các vấn đề của bạn, directpath io, rss, vcpu, sơ đồ quản lý năng lượng ...

Tôi có thể cung cấp cho bạn một số liên kết giúp nhóm ảo của bạn hoặc bạn :)

Liên kết này là về điều chỉnh máy chủ http://buildvirtual.net/tuning-esxi-host-networking-configuration/

Và pdf chất béo này:

http://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.0.pdf

Và cái này là về rss:

http://kb.vmware.com/'mservice/microsites/search.do?lingu=en_US&cmd=displayKC&externalId=2008925


Cảm ơn đã trả lời, nhưng tôi là một VCP. Đây thực sự không phải là về cấu hình máy chủ. Bài viết của Microsoft mà tôi đã liên kết để giải thích rằng bộ đếm hiệu suất được đề cập không được cao hơn 0 và nó nằm trên một số máy ảo. Tôi đang cố gắng hiểu được các cài đặt vNIC ngoài những gì được giải thích trong bài viết về VMware KB.
briantist

-1

Tôi không ở vị trí để tìm kiếm đầy đủ và chỉ cho bạn đến đúng trang: vì vậy tôi đang yêu cầu bạn tự tìm kiếm chi tiết ... (xin lỗi)

Trong Fail over Cluster, có 4 cài đặt có thể được chỉnh sửa; và chúng sẽ không ảnh hưởng đến bộ đệm hoặc phân trang hoặc không phân trang ... Nó thay đổi cách Fail over Cluster đưa ra quyết định xem xét một nút "bị loại bỏ". Các cài đặt này là:

SameSubnetDelay SameSubnetThrưỡng CrossSubnetDelay CrossSubnetThrưỡng

Họ có thể không giải quyết vấn đề của bạn, nhưng điều chỉnh chúng có thể giúp bạn thoát khỏi rắc rối vào lúc này ...

Khi trở lại vào thứ Hai, tôi sẽ kiểm tra lại bài đăng này nếu bạn có thêm câu hỏi

HTH, Edwin.


PS: bạn có thể cho chúng tôi biết phiên bản Windows bạn đang chạy không?
Edwin van Mierlo

Đây là Windows 2008. Tôi đã nhận được hồi âm từ VMware (sau tất cả những tháng này), nhưng tôi thậm chí không ở công ty nơi tôi ở khi điều này xảy ra. Câu trả lời không đơn giản và tôi đã có ý định đọc qua câu trả lời của họ và đăng một cái gì đó, nhưng tôi không có thời gian. Tôi đánh giá cao lời khuyên của bạn về cụm nhưng tôi không thể thử chúng vào lúc này.
briantist

Tôi chỉ nhận thấy rằng bài đăng gốc đã được vài tháng tuổi, điều đó không rõ ràng trong ứng dụng Android ... Tôi sẽ xem xét kỹ hơn vào lần tới ... trong khi câu trả lời của tôi vẫn còn hiệu lực cho những người dùng khác có thể tìm kiếm cho những trải nghiệm tương tự.
Edwin van Mierlo
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.