LINUX.ORG.RU

Распределение нагрузки по CPU


0

1

Приветствую всех. Возникла следующая проблема: на 8-ми ядерном процессоре с CentOS 5.5 работает скрипт на php, который производит большую нагрузку на процессор, все бы было хорошо, если бы использовались все 8 процессоров, а так, загружен только 1, а остальные 7 айдлят. Пожалуйста, подскажите, что можно сделать в данной ситуации


google process, thread

anonymous
()

ничего!
если в софте не предусмотрено распараллеливание, то можешь хоть заизвращаться весь - толку ноль!
ладно ещё компилируемые - там можно криво косо подрехтовать, а скрипт - а вот нихера!

megabaks ★★★★
()

Скрипт на пыхе? Значит веб-сервер. Если веб-сервер, значит скрипт запускается не один. Поэтому зачем параллелить скрипт? Нужно распараллелить веб-сервер.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

> Скрипт на пыхе? Значит веб-сервер. Если веб-сервер, значит скрипт запускается не один. Поэтому зачем параллелить скрипт? Нужно распараллелить веб-сервер.

а рулит всем этим вот такой админ ))

Theli
()
Ответ на: комментарий от Theli

Ну, может быть ставили и настраивали какие-нибудь интеграторы по договору подряда без дальнейшего обслуживания. А смотрящим потом приставить могут кого угодно.
В любом случае для решения задачи топикстартера слишком мало исходной информации. Если конечно, его пых-скрипт не из крона дёргается. :D

Lumi ★★★★★
()

Для нагрузки семи остальных ядер нужно запустить еще 7 таких скриптов.

exst ★★★★
()

Если инстанс крипта 1, например из крона, то ничего толком не сделать. Если параллельные запросы, где много вызовов тяжелого скрипта через веб - дык оно само должно размазываться.

Не совсем понятна ваша проблема. Пыховский скрипт - неделимая вещь. 1 скрипт восемью ядрами не ускорить. Можно выполнять 8 скриптов параллельно, если вам такое подходит.

Vit ★★★★★
()
Ответ на: комментарий от Decay

Хотя бы что это за скрипт и как он запускается.
В принципе, в топике люди уже всё написали.

Lumi ★★★★★
()
Ответ на: комментарий от Vit

Скрипт запускается 1 раз, хоть через SSH и крутится неделями, 8 скриптов выполнять нецелесообразно для задачи нужен только 1 скрипт. Тут говорили что-то про распараллеливание веб-сервера, как это можно сделать?

Decay
() автор топика
Ответ на: комментарий от Decay

Опишу подробнее: На моем CentOS стоит пятый PHP, скрипт запустил из консоли через nohup, в общем говоря, запустил демона. Вопрос в следующем - как раскидать нагрузку создаваемую скриптом по остальным 7 ядрам.

Decay
() автор топика
Ответ на: комментарий от Decay

админскими методами - никак, надо переписывать скрипт, чтобы умел работать в несколько потоков.

maloi ★★★★★
()
Ответ на: комментарий от Decay

Раз у вас шелловский скрипт, вебсервер тут ни каким местом. Вебовские методы всего лишь дают дополнительных механизм регулировки, сколько скриптов пускать параллельно.

У вас скрипт написан без учета многопоточности. Надо переписывать. Иначе никак. Если ваш скрипт делает большие обработки данных, думайте как напились данные на части и обработать параллельно.

Vit ★★★★★
()
Ответ на: комментарий от Decay

через pnctl_fork
это конечно не треды, а процессы, но хоть что-то.

maloi ★★★★★
()
Ответ на: комментарий от Decay

http://php.net/manual/en/function.pcntl-fork.php

Ручками. Через одно место. Если нельзя расписать вашу задачу, чтобы 8 скриптов параллельно висели, и каждый свой кусок данных обрабатывал, лучше другой язык выбрать.

Vit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.