Điểm:0

Tăng mức sử dụng bộ nhớ trên Máy chủ NFS

lá cờ kw

Tôi đang tạo dữ liệu (tệp 100 GB) cuối cùng được sao chép vào máy chủ thông qua NFS v4.2, trên mạng 10Gb. Các tệp này được lưu trữ trên nhiều ổ cứng, với định dạng XFS (một bản sao cho mỗi ổ đích).

Khi tác vụ sao chép đang chạy:

  • Có một mức sử dụng bộ nhớ lớn trên máy khách (có thể hơn 64GB, chiếm bao nhiêu bộ nhớ cũng được).
  • Nhưng hầu như không có ram được sử dụng trên máy chủ.

Tôi muốn giảm mức sử dụng bộ nhớ trên máy khách vì chúng liên tục tạo dữ liệu và điều đó làm chúng chậm lại. Ngược lại, máy chủ chủ yếu không được sử dụng.

Tôi đoán vì ổ cứng bị chậm trên máy chủ, máy khách sẽ đệm nhiều dữ liệu nhất có thể để làm cho bản sao ít bị chặn hơn. Tôi không thể thay đổi thiết lập phần cứng.

Có cách nào để buộc máy chủ lưu trữ nhiều dữ liệu hơn không? Tôi muốn ưu tiên sử dụng bộ nhớ máy chủ hơn là bộ nhớ máy khách.

Cấu hình NFS:

10.0.3.1:/ /mnt/field nfs nfsvers=4.2,noatime,nodiratime,_netdev,noauto,x-systemd.automount,x-systemd.mount-timeout=10 0 0

/etc/exports:

/mnt 10.0.0.0/16(rw,async,fsid=0,no_subtree_check,crossmnt)

Cấu hình Nic trên máy chủ:

MTU9000
rinbuffer tx 512, rx 1024

Cấu hình Nic trên máy khách:

MTU9000
rinbuffer tx 1024, rx 512

Chỉnh sửa: Theo yêu cầu, /proc/meminfo:

Máy khách ------------------------------------------ Máy chủ ------ -------------------------

nhập mô tả hình ảnh ở đây

Giám sát việc sử dụng bộ nhớ trên máy khách này:

nhập mô tả hình ảnh ở đây

Sử dụng mạng:

nhập mô tả hình ảnh ở đây

Lưu ý: Máy khách sử dụng tmpfs lớn (100GB) để tính toán. Tôi nghĩ rằng tmpfs này không bao giờ bị trừ khỏi số lượng bộ nhớ khả dụng.

Chỉnh sửa2:

Mối tương quan giữa việc sử dụng mạng và bộ nhớ rõ ràng hơn trên máy khách khác (tôi nên bắt đầu với điều đó). Khách hàng này không sử dụng bất kỳ tmpfs nào.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

John Mahowald avatar
lá cờ cn
Vui lòng chỉnh sửa câu hỏi của bạn để thêm `/proc/meminfo` từ cả máy khách và máy chủ, khi đang tải.
Ealrann avatar
lá cờ kw
Ok, tôi chỉ cần thêm nó.
Matthew Ife avatar
lá cờ jo
Bạn cũng có thể cung cấp một bản sao của `/etc/exports` của mình không?
Ealrann avatar
lá cờ kw
Vâng, tôi đã thêm nó. Tôi cũng đặt nó ở đây cho đơn giản: `/mnt 10.0.0.0/16(rw,async,fsid=0,no_subtree_check,crossmnt)`
Điểm:3
lá cờ jo

Tôi muốn giảm mức sử dụng bộ nhớ trên máy khách, vì chúng liên tục sản xuất dữ liệu và nó làm chúng chậm lại.

Làm thế nào bạn biết điều này? Hầu hết bộ nhớ của máy khách nằm trong bộ nhớ cache của trang, điều này là hoàn toàn bình thường và thậm chí việc cải thiện bộ đệm trên máy chủ sẽ không ngăn được bộ nhớ đệm tích cực của phía máy khách dữ liệu này.

Bạn đã thử xóa bộ nhớ cache của trang (dưới dạng thử nghiệm) và xem ứng dụng của bạn hoạt động như thế nào mà không sử dụng bộ nhớ cache của trang chưa?

NFS có tính nhất quán 'gần mở', nghĩa là nội dung của dữ liệu và siêu dữ liệu thực sự chỉ được đảm bảo ổn định khi bạn không chủ động mở tệp (nghĩa là một khách hàng khác có thể thay đổi tệp trên một tệp khác hệ thống và bạn sẽ không phải là người khôn ngoan hơn).

Do giới hạn về tính nhất quán này, bộ đệm trang được các ứng dụng hệ thống máy khách NFS dựa vào để đảm bảo dữ liệu có sẵn để đọc lại nếu cần.

Tất cả những gì đang được nói, mà không biết những gì đang xảy ra trong bạn /etc/exports một phương pháp để giảm tải thêm dữ liệu lên máy chủ có thể là đảm bảo bạn gắn NFS trên máy khách của mình bằng đồng bộ hóa tùy chọn gắn kết và trên máy chủ của bạn xuất các đường dẫn với không đồng bộ tùy chọn gắn kết.

Điều này sẽ có tác dụng đảm bảo việc ghi được cam kết với máy chủ ở phía máy khách, trong khi máy chủ sẽ luôn trả lời 'xong' trước khi nó cam kết dữ liệu vào đĩa.

Điều này sẽ ảnh hưởng đến thông lượng của máy khách vì bạn sẽ gây ra độ trễ do xác thực mọi yêu cầu ở phía máy khách, nhưng máy chủ sẽ đệm nhiều dữ liệu hơn vì nó sẽ không đợi dữ liệu đến đĩa trước. Bạn cũng có thể muốn xoay vòng dirty_write_centisecs và các bit khác trên máy chủ để cho phép nó đệm nhiều dữ liệu hơn vào quá trình ghi lại.

Tuy nhiên, đây là vấn đề -- điều này có khả năng làm cho máy khách chạy chậm lại và làm giảm tính toàn vẹn của máy chủ khi gặp sự cố. Nếu máy chủ gặp sự cố, bạn có thể mất dữ liệu.

Ngoài ra, điều này sẽ không ảnh hưởng đến việc sử dụng bộ nhớ cho bộ đệm trang trên các máy khách mà NFS không có quyền kiểm soát thực sự.

Nói chung, tôi nghi ngờ việc giảm mức sử dụng bộ nhớ của máy khách (nếu đó là bộ đệm trang mà bạn đang đo ở đây) sẽ cải thiện hiệu suất máy khách của bạn.

Ealrann avatar
lá cờ kw
Cảm ơn bạn vì câu trả lời. Tôi biết điều đó vì lô đầu tiên được sản xuất nhanh hơn, nhưng ngay sau khi một bản sao bắt đầu, nó sẽ chậm hơn ~10%. Tôi nghĩ rằng quy trình của tôi bị giới hạn bởi quyền truy cập bộ nhớ; vì vậy tôi nghĩ rằng việc sử dụng bộ nhớ cho bất kỳ thứ gì khác (ở đây là bản sao mạng) là lý do khiến tốc độ chậm lại. Nhưng đó không phải là vấn đề lớn, tôi chỉ cố gắng tối ưu hóa một chút. Vì tôi có thể chịu được việc mất dữ liệu nên tôi sẽ thử `async` của bạn
Điểm:1
lá cờ cn

Không, việc buộc sử dụng ít bộ nhớ hơn có thể khiến mọi thứ chậm hơn chứ không phải nhanh hơn. Bạn đang tiêu tốn năng lượng cho 188 GB DRAM nhanh, cũng có thể sử dụng nó.

Máy chủ của khách hàng có 188 GB MemTotal và đang sử dụng 162 GB trong số đó cho Bộ nhớ đệm. Trên thực tế, nhu cầu bộ nhớ khá thấp, lưu ý Bộ nhớ 123 GB có sẵn có thể được giải phóng rất nhanh. Hầu hết 40 GB của Shmem có lẽ là tmpfs.

Vì Cached + Shmem cộng nhiều hơn MemTotal, tôi nghi ngờ tmpfs đang được tính hai lần, dưới dạng bộ nhớ dùng chung và trong bộ đệm. Cũng sẽ giải thích cách Cached trừ Shmem xấp xỉ MemAvailable, các tmpf thiếu bộ nhớ liên tục không thể được giải phóng.

Phía máy chủ, 15 GB và thay đổi MemTotal, 13 GB trong Bộ nhớ cache. Rất nhiều bộ nhớ khả dụng trên máy chủ này. Có lẽ, hầu hết những gì nó làm là phục vụ các tệp chứ không phải nhiều nhu cầu bộ nhớ khác.

Không có bằng chứng về chi phí chung như hoạt động vmscan nặng hoặc sắp hết MemAvailable, tôi khuyên bạn không nên hành động.

Ealrann avatar
lá cờ kw
Cảm ơn bạn, tôi sẽ kiểm tra hoạt động vmscan.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.