@delkov

[linux] как выделить больше памяти/ресурcов для приложения?

Доброго времени суток, уважаемые!

Дано: linux, 4 ядра, 16gb RAM.
Задача: необходимо дать больше ресурсов для процесса matlab, либо для программы написанной на C++ main.cpp.

При выполнении программы процессор кушает только 14%, RAM 15% -- хотелось бы больше.
Существуют ли какие-то варианты распараллеливания?
*сама программа тривиальна: есть txt ~ 1gb, читается построчно и с данными строки делаются арифметические операции.

Заранее благодарен!
  • Вопрос задан
  • 2673 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Распараллеливать смысла нет - дисковые операции плохо паралляться, т.к. диск - медленное устройство. Основной тормоз в вашем случае именно он. Читайте не построчно, а большими блоками, кратными размеру кластера, например по 4/8/16Кб, этим сократите количество дисковых операций. Код конечно усложниться. В прошлом вопросе вам Oleg Shevelev это уже писал.
Для распараллеливания можно использовать асинхронный IO, но, имхо, это еще больше усложнит код, скорее всего для вашей задачи это не нужно (должно помочь чтение большими порциями), т.к. дальнейшие операции с прочитанной строкой тривиальны.
И кстати, можно не делать чтение файла на С++, если хорошо знаете Матлаб делайте на нем по тому же алгоритму - т.к. дисковые операции основной тормоз, то преимущества от использования С++ практически не будет.

А вообще система отдает программе столько ресурсов сколько ей требуется, если ресурсов не хватает - обычно программа завершается с ошибкой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Иногда помогает увеличение приоритета процесса (max -20, min 19, user default 0) командами nice, renice
при запуске
bash$ nice -n -20 yourmatlabprocess
в ходе работ
bash$ renice -n -20 PIDofYourProcess
Ответ написан
@lovecraft
При выполнении программы процессор кушает только 14%, RAM 15% -- хотелось бы больше

Значит, бутылочное горлышко в другом месте )
Проще всего разместить текстовый файл на RAM-диске, например
mkdir /tmp/ramdisk
mount -t tmpfs -o size=2G tmpfs /tmp/ramdisk
cp ./myfile.txt /tmp/ramdisk

Все сразу станет очень быстро.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы