Linux з 256 Гб пам’яті / 48 ядер - Машина починає молотити / задихатися, коли залишилося багато пам'яті


12

Машина: Dell r815, CentOS 5.4, 256 ГБ оперативної пам’яті, 4 x 12 ядер.

У нас є програма, яка має файл 275 ГБ. Це робить сортування на місці 20 ГБ даних одночасно, тобто обмінюється бітами навколо і замінює їх в одному файлі. Це все добре працює.

Існує останній пропуск, який потім читає весь файл і робить сортування об'єднань на різних фрагментах об'ємом 20 ГБ і виводить їх у новий файл.

Цей процес НА ВИМОГУ деякий час працює нормально, і він закінчується зчитуванням близько 50 Гб на диску. Десь після цього машина ВСІЙ починає вилазити.

Прості команди, такі як ps -ef, ls -alзависають довго і показують, що приймають 100% ЦП (що є лише одним ядром).

Дивлячись на статистику пам'яті top, я бачу, що вона використовує близько 120 ГБ оперативної пам’яті (тобто 128 ГБ безкоштовно) і має 120 ГБ у розділі «кешування».

Хтось бачив подібну поведінку раніше? Цей же процес відмінно працює на машині з 64 Гб пам'яті - так я якось думаю, що це пов'язано з монтажем оперативної пам’яті, який я маю в машині.

(як ми говоримо, я проводжу тест на цій машині з усіма, крім 64 Гб, щоб виключити апаратну проблему).

Мені, можливо, не вистачає декількох vm-файлів /etc/sysctrl.conf?

Дякую!


Що роблять диски .. Ви збираєтеся в пекло swap ????
Arenstar

64-бітове ядро ​​/ додаток / тощо? Ви згадали 100% процесор, яка середня завантаженість, коли це трапиться, це додаток багатопотокове (воно не використовуватиме всі процесори, якщо ні), що вам каже vmstat 4 (конкретно io / cpu)
coredump

це на кшталт "ps" на 100% процесор є з 4800% (тому що 48 ядер) - так що, швидше за все, заблоковано io чи щось. середнє завантаження на коробці лише як 5. диски, які є твердим станом, не бачать багато записів ... Схоже, більше проблеми з ядром, то й ресурсів
aspitzer

машина взагалі не міняється.
аспіттер

1
так .. зараз працює з 64 Гб. слід знати протягом години, якщо це стосується загальної кількості пам'яті в машині
аспіттер

Відповіді:


12

Ваше запитання нагадало мені те, що я нещодавно прочитав:

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

Тут йдеться про те, як архітектури NUMA (як, наприклад, ви знайдете в, наприклад, 48-ядерній системі AMD) впливають на розподіл пам'яті та їх заміну. Я не знаю, чи це ти наштовхуєшся, але це звучало достатньо схоже, що, можливо, варто прочитати.

Навіть якщо це не відповідь, яку вона дає для захоплюючого читання.


1
Це здається гідним вирішенням цієї проблеми. І це фантастичне читання.
coredump

1
Це чудове зчитування, і 4 сокети, 256 Гб оперативної пам’яті = 64 Гбіт на вузол, і, здається, саме там у вас виникають проблеми, що точно повторює ситуацію в документі.
Марк Хендерсон

12

Отже, це виявилося помилкою ядра в 64-бітній Centos 5.4 AND 64bit Fedora 14. Після того, як я встановив Centos 5.5, проблема вирішилася.

Вибачте, я не маю кращої відповіді для всіх ...


1
Гей, якщо це було виправлено, ось це і виправлено. Поставте собі галочку, щоб інші люди могли навчитися вашим труднощам :-)
mfinni

0

Ви можете спробувати додати рядок до /etc/sysctl.conf, щоб вказати, що своп використовуватиметься лише при крайній необхідності.

свопіння = 0

Ви, можливо, вже знаєте, що цей файл визначає глобальні налаштування, тому необхідно враховувати вплив, яке ця зміна матиме на решту програм, що працюють в середовищі.


це вже встановлено ... але, як я вже згадував, є 128 Гб безкоштовно - тому це не стосується жодних проблем із свопом.
аспіттер

0

Де ваш тимчасовий простір. Часто це на темпфах. Tempfs витягує це простір із резервної копії пам’яті за допомогою місця підкачки, тому, якщо ви виявите занадто багато матеріалів у tempfs, це запустить swap I / O.

Враховуючи розмір даних, які ви об'єднуєте, я очікував би простоти, коли ви потрапите в остаточне злиття.

Поширення пам’яті своп на декілька дисків може допомогти.


0

Незважаючи на те, що ви можете не отримувати своп, ви все ще можете бути пов'язаними вводу / виводу. Про це свідчить ls info.

Я хотів би подивитися на висновок, dstat -dfщоб показати статистику диска, або dstat -af(так, це буде байліоновий стовпчик завширшки; це те, що відбувається, коли у вас є 48 ядер і показуєте використання процесора на всіх), якщо ви хочете все це побачити.

Я був би здивований, якби всі процесори були зайняті (сортування злиття не є інтенсивним процесором), але ви нічого не говорите про вашу систему вводу / виводу. Якщо у вас є кілька дисків і купа файлів, ви можете обмолочувати диск, прагнучи до кожного файлу, щоб зберегти сортування злиття.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.