AWS là một nền tảng đám mây cực kỳ phổ biến và đáng tin cậy để quản lý việc triển khai MongoDB, nhưng câu hỏi về XFS vs EXT4 khiến nhiều nhà phát triển băn khoăn không biết hệ thống tệp Linux nào sẽ mang lại cho họ hiệu suất tốt nhất cho các ứng dụng của họ. Hướng dẫn chính thức của MongoDB về việc triển khai vào sản xuất khuyến nghị sử dụng hệ thống tệp XFS trên Linux, đặc biệt khi triển khai công cụ lưu trữ WiredTiger. Tuy nhiên, đề xuất không cho chúng ta biết lý do tại sao chúng ta nên mong đợi hiệu suất tăng hoặc loại hiệu suất mà chúng ta sẽ trải nghiệm. Chúng tôi đã quyết định đi sâu vào vấn đề bằng cách điều tra định lượng hiệu suất MongoDB trên XFS để bạn có thể so sánh xem EXT4 có phải là lựa chọn tốt hơn cho các phiên bản AWS EC2 của bạn hay không.
Hệ thống tệp XFS
XFS là hệ thống tệp nhật ký 64 bit có khả năng mở rộng cao, hiệu suất cao được phát triển tại SGI vào năm 1993 và được chuyển sang Linux vào năm 2002. Nó hỗ trợ I / O song song cao và kích thước hệ thống tệp lên đến 9 Exabyte và chỉ ghi nhật ký là siêu dữ liệu hệ thống tệp, không phải dữ liệu người dùng. Một số tính năng nâng cao hiệu suất chính của XFS là:
- Truy cập song song thông qua các nhóm phân bổ đảm bảo nhiều luồng có thể thực hiện I / O đồng thời trên cùng một ổ đĩa.
- Phân bổ dựa trên phạm vi rộng giúp giảm phân mảnh, kích thước siêu dữ liệu và cải thiện hiệu suất I / O bằng cách cho phép các hoạt động I / O ít hơn và lớn hơn.
- Phân bổ trì hoãn cải thiện hiệu suất và cấu trúc dữ liệu. Phân mảnh được giảm thiểu bằng cách kết hợp ghi và phân bổ phạm vi thành nhiều phần lớn và các tệp được ghi ngẫu nhiên (chẳng hạn như những tệp được ánh xạ bộ nhớ) có thể được cấp phát liền kề
Có nhiều tính năng XFS khác để khám phá và bạn có thể tìm hiểu thêm trên trang web của XFS và Hướng dẫn sử dụng XFS.
Chạy Kiểm tra Hiệu suất trên MongoDB
Như bạn có thể đã tìm hiểu trong các bài viết trước của chúng tôi, chúng tôi đã sử dụng YCSB để đánh giá hiệu suất MongoDB, bao gồm so sánh chi tiết về hiệu suất MongoDB được MMAP hỗ trợ trên các nhà cung cấp đám mây khác nhau. Chúng tôi quyết định sử dụng cùng một khối lượng công việc của YCSB mà chúng tôi đã sử dụng trước đó:Khối lượng công việc A (Cập nhật nặng:50% lần đọc + 50% cập nhật). Giai đoạn chèn của khối lượng công việc đo lường hiệu suất của 100% khối lượng công việc ghi, trong khi giai đoạn tải sẽ đo lường hiệu suất so với khối lượng công việc thực tế (50/50% đọc / cập nhật).
Các thử nghiệm của chúng tôi được chạy trên trình điều khiển MongoDB đồng bộ và bản phân phối Linux là Amazon Linux (4.4.44-39.55.amzn1.x86_64). Chúng tôi đã chọn MongoDB phiên bản 3.2.10 chạy WiredTiger cho các thử nghiệm của mình vì WT là nơi mong đợi mức tăng tốt hơn và đã chạy thử nghiệm trên 2 thiết bị phần cứng khác nhau:
- Đĩa tốc độ cao :AWS EC2 c3.large trường hợp trong đó MongoDB đang sử dụng đĩa SSD trong cấu hình RAID 0 để lưu trữ (ánh xạ tới kích thước cụm ScaleGrid HighPerfLarge).
- Đĩa tốc độ trung bình :AWS EC2 m3.medium trường hợp trong đó MongoDB đang sử dụng đĩa được cung cấp IOPS của EBS (Elastic Block Store) được đặt ở 300 IOPS (ánh xạ tới kích thước cụm ScaleGrid Trung bình).
Lưu ý:Bất kỳ loại kiểm tra hiệu suất nào trong môi trường ảo hóa đều phải được thực hiện bằng một chút muối. Mục đích của chúng tôi ở đây không phải là điểm chuẩn các con số hiệu suất trên các môi trường này mà là cung cấp một số phép đo định lượng về sự khác biệt hiệu suất giữa EXT4 và XFS trong cùng một môi trường ảo hóa.
Đĩa SSD tốc độ cao
Chúng tôi đã chạy thử nghiệm sau trên thiết bị hiệu suất cao của mình:
- Đã chèn 6 triệu bản ghi ở các lần tải máy chủ khác nhau (bằng cách thay đổi số lượng chuỗi ứng dụng YCSB).
- Chạy khối lượng công việc ở số lượng hoạt động là 10 triệu các bản ghi ở các lần tải máy chủ khác nhau.
Kết quả Hiệu suất Đĩa SSD
Đặc điểm thông lượng / độ trễ để chèn bản ghi 6M trên cấu hình hiệu suất cao:
Đặc điểm thông lượng / độ trễ cho các hoạt động ghi / cập nhật 10M trên cấu hình hiệu suất cao:
Quan sát đĩa SSD
- XFS nhanh chóng một cách ngoạn mục trong cả giai đoạn chèn và thực thi khối lượng công việc. Ở số lượng luồng thấp hơn, nó nhanh hơn 50% so với EXT4. Khi tải tăng lên, cả hai hệ thống tệp đều bị giới hạn bởi thông lượng của phần cứng bên dưới, nhưng XFS vẫn duy trì vị trí dẫn đầu.
- Độ trễ cho cả XFS và EXT4 đều có thể so sánh được trong cả hai lần chạy. Lưu ý rằng tất cả các con số đều tính bằng micro giây.
Đĩa IOPS được cung cấp bởi EBS chậm hơn (300 IOPS)
Thử nghiệm sau được thực hiện trên giàn hiệu suất cỡ trung bình của chúng tôi:
- Đã chèn 3 triệu bản ghi ở các lần tải máy chủ khác nhau (bằng cách thay đổi số lượng chuỗi ứng dụng YCSB).
- Chạy khối lượng công việc ở số lượng hoạt động là 5 triệu các bản ghi ở các lần tải máy chủ khác nhau.
Với kinh nghiệm của chúng tôi về cấu hình cao cấp, chúng tôi hy vọng XFS cũng sẽ có vị trí dẫn đầu trong lĩnh vực này.
Kết quả hiệu suất đĩa IOPS
Đặc điểm thông lượng / độ trễ để chèn bản ghi 3M trên cấu hình trung bình:
Đặc điểm thông lượng / độ trễ cho các hoạt động ghi / cập nhật 5M trên cấu hình trung bình:
Quan sát đĩa IOPS
- XFS có thể so sánh được, mặc dù hơi kém hơn EXT4 trên cấu hình có kích thước trung bình. Có vẻ như ở mức tài nguyên hệ thống này, việc tối ưu hóa hiệu suất của XFS không thực sự tạo ra sự khác biệt. Đây là một nhận xét quan trọng nếu bạn đang cân nhắc triển khai XFS trên các phiên bản nhỏ hơn với hy vọng hiệu suất được cải thiện.
XFS so với EXT4 trên AWS EC2
Về mặt hiệu suất, XFS thực sự là một hệ số nhân lực khi được ghép nối với các đĩa tốc độ cao mà nó có thể tận dụng thực sự. Đối với các hệ thống cấp thấp đến trung cấp, có vẻ như không thể làm được gì nhiều để cải thiện hiệu suất của bạn.