Я запускаю программу на Java, которую я написал, которая называет Gurobi (программное обеспечение для оптимизации линейных программ). Когда я запускаю большую программу, выполнение которой занимает ~ 20 часов, даже простые задачи (например, открытие новой вкладки в Chrome) занимают 5-10 секунд. Ява-программа, которую я написал, представляет собой однопоточное приложение, но Gurobi использует несколько ядер. Мой компьютер - iMac под управлением OS X 10.7, который имеет 4 ядра процессора.

Я хотел бы иметь возможность выполнять большие вычисления, в то же время имея возможность выполнять обычную работу на компьютере.

Вопросы:

  1. Как проверить, что является узким местом: процессор или память?
  2. Можно ли заставить java работать с одним процессором, чтобы компьютер не сильно тормозил?
  3. Как уменьшить влияние больших вычислений на обычное удобство использования компьютера?

Обновление: я смог заставить большие вычисления работать гладко в фоновом режиме, сказав Gurobi использовать только одно ядро процессора, и используя nice чтобы дать ему низкий приоритет.

2 ответа2

2

Прежде всего определите, в чем проблема. Действительно ли это проблема, когда Java/Gurobi загружает процессор, или процессор работает нормально и использует ли он почти всю память? Или это связано с вводом / выводом?

Если он привязан к процессору, проверьте unix-команды « nice » и « renice » или установите привязку к процессору.

Если он использует всю память, попробуйте настроить Java на использование меньше (или купить больше оперативной памяти). (Смотрите этот пост на сайте сестры или о том, как это сделать).

Если он связан с вводом / выводом, то либо предоставьте ему свой собственный диск (например, сохраните данные на втором жестком диске или пером), либо ускорите доступ к диску (например, с помощью SSD), либо каким-либо образом установите ввод / вывод приоритет. Я понятия не имею, как это сделать на OSX.

1

Сначала вы должны определить, что является узким местом, вы можете использовать OS Activity Monitor, чтобы посмотреть на использование системных ресурсов, и, надеюсь, определить, что максимизирует ваше использование и вызывает замедление.

Для сокращения использования процессора в OS X существует программа под названием nice, которая позволяет вам установить приоритет планирования для процесса. Попробуйте позвонить Гуроби с помощью команды:

nice -n 20 Gurobi

Где Gurobi - это путь к исполняемому файлу для программы, которую вы пытаетесь запустить.

Установка -n 20 установит для Gurobi минимально возможный приоритет планирования на вашем компьютере. Это приведет к тому, что выполнение займет больше времени, но это будет означать, что другие процессы будут более отзывчивыми. Вы можете изменить значение -n в диапазоне от -20 до 20, где 20 - это самый низкий приоритет, а -20 - самый высокий, так что настройте его как хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .