Linux với 256GB mem / 48 lõi - Máy bắt đầu đập / nghẹt thở với hàng tấn bộ nhớ còn lại


12

Máy: Dell r815, CentOS 5.4, RAM 256GB, 4 x 12 lõi.

Chúng tôi có một ứng dụng có tệp 275GB. Nó thực hiện sắp xếp tại chỗ trên 20GB dữ liệu cùng một lúc, nghĩa là nó hoán đổi các bit xung quanh và thay thế chúng trong cùng một tệp. Tất cả điều này hoạt động tốt.

Có một lượt cuối cùng sau đó đọc qua toàn bộ tệp và thực hiện sắp xếp hợp nhất trên các khối 20 GB khác nhau và xuất chúng thành một tệp hoàn toàn mới.

Quá trình này SEEMS để chạy ổn trong một thời gian và cuối cùng nó sẽ xả ra khoảng 50 GB vào đĩa. Sau đó, máy WHOLE bắt đầu hoạt động.

Các lệnh đơn giản như ps -ef, ls -altreo trong một thời gian dài và hiển thị là lấy 100% CPU (chỉ là một lõi).

Nhìn vào số liệu thống kê bộ nhớ trên top, tôi thấy rằng nó đang sử dụng khoảng 120 GB RAM (miễn phí 128 GB) và có 120 GB trong phần "lưu trữ".

Có ai nhìn thấy loại hành vi này trước đây? Quá trình tương tự chạy tốt trên một máy có bộ nhớ 64GB - vì vậy bằng cách nào đó tôi nghĩ rằng nó có liên quan đến việc gắn RAM tôi có trong máy.

(như chúng tôi đã nói, tôi đang chạy thử nghiệm trên máy này với tất cả trừ 64GB - để loại trừ sự cố phần cứng).

Tôi có lẽ thiếu một số thông số vm trong /etc/sysctrl.conf?

Cảm ơn!


Các đĩa đang làm gì .. Bạn đang đi vào địa ngục trao đổi ????
Arenstar

Nhân 64 bit / ứng dụng / vv? bạn đã đề cập đến 100% cpu, mức trung bình tải khi xảy ra, đó là ứng dụng đa luồng (nó sẽ không sử dụng tất cả các bộ xử lý nếu không), vmstat 4 nói với bạn (cụ thể là io / cpu)
coredump

điều này giống như "ps" là 100% cpu nằm ngoài 4800% (vì 48 lõi) - vì vậy rất có thể bị chặn bởi io hoặc một cái gì đó. trung bình tải trên hộp chỉ giống như 5. các đĩa ở trạng thái rắn không nhìn thấy nhiều ghi ... Có vẻ như nhiều vấn đề về nhân hơn là tài nguyên
aspitzer

Máy không hoán đổi chút nào.
aspitzer

1
yeah .. chạy nó với 64gb bây giờ. nên biết trong vòng một giờ nếu nó liên quan đến tổng số lượng mem trong máy
aspitzer

Câu trả lời:


12

Câu hỏi của bạn làm tôi nhớ đến một cái gì đó tôi đọc gần đây:

http://jcole.us/blog/archives/2010/09/11/mysql-swap-insanity-and-the-numa-arch architecture /

Điều này giải quyết cách các kiến ​​trúc NUMA (như bạn có thể tìm thấy trong hệ thống AMD 48 lõi) ảnh hưởng đến việc cấp phát và hoán đổi bộ nhớ. Tôi không biết đây có phải là những gì bạn đang chạy vào không nhưng nghe có vẻ tương tự đến mức nó có thể đáng để đọc.

Ngay cả khi đó không phải là câu trả lời, nó làm cho việc đọc hấp dẫn.


1
Đó có vẻ là một cú đánh xứng đáng vào vấn đề này. Và đó là một bài đọc tuyệt vời.
coredump

1
Đó là một bài đọc tuyệt vời và 4 ổ cắm, 256Gb RAM = 64Gb mỗi nút và dường như đó là nơi bạn gặp sự cố, điều này sao chép chính xác tình huống trong tài liệu.
Mark Henderson

12

Vì vậy, đây có vẻ là một lỗi kernel trong 64 bit Centos 5.4 VÀ 64 bit Fedora 14. Sau khi tôi cài đặt Centos 5.5, vấn đề đã biến mất.

Xin lỗi tôi không có câu trả lời tốt hơn cho mọi người ...


1
Này anh bạn, nếu đó là cái đã sửa nó, thì cái đó đã sửa nó. Hãy cho mình dấu kiểm để người khác có thể học hỏi từ những khó khăn của bạn :-)
mfinni

0

Bạn có thể thử thêm một dòng vào /etc/sysctl.conf để chỉ định rằng trao đổi chỉ được sử dụng khi thực sự cần thiết.

swappiness = 0

Bạn có thể đã biết rằng tệp này xác định cài đặt chung, vì vậy cần phải xem xét tác động của thay đổi này đối với phần còn lại của các ứng dụng đang chạy trong môi trường.


đã được đặt ... nhưng như tôi đã đề cập, có 128GB miễn phí - vì vậy nó không gặp phải bất kỳ vấn đề hoán đổi nào.
aspitzer

0

Không gian tạm thời của bạn ở đâu. Thường là trên tempfs. Tempfs lấy không gian từ bộ nhớ được sao lưu bằng không gian hoán đổi, vì vậy nếu bạn kết thúc với quá nhiều thứ trong tempfs, nó sẽ kích hoạt trao đổi I / O.

Với kích thước của dữ liệu bạn đang hợp nhất, tôi sẽ mong đợi sự thay đổi khi bạn đạt được kết hợp cuối cùng.

Truyền bá lưu trữ trao đổi của bạn trên nhiều đĩa có thể giúp đỡ.


0

Mặc dù bạn có thể không được trao đổi, bạn vẫn có thể bị ràng buộc I / O. Thông tin ls cho thấy điều này.

Tôi sẽ xem kết quả đầu ra dstat -dfđể hiển thị số liệu thống kê ổ đĩa, hoặc dstat -af(vâng, nó sẽ là một cột có giá trị lớn; đây là điều xảy ra khi bạn có 48 lõi và hiển thị mức độ sử dụng CPU trên tất cả chúng) nếu bạn muốn xem tất cả.

Tôi sẽ ngạc nhiên nếu tất cả các CPU đều bận rộn (sắp xếp hợp nhất không phải là một nhiệm vụ chuyên sâu của CPU), nhưng bạn không nói gì về hệ thống I / O của bạn. Nếu bạn có một vài đĩa và một loạt các tệp, bạn có thể đập đĩa để tìm kiếm từng tệp để giữ cho sắp xếp hợp nhất được cung cấp.

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.