PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 20 июн 18 6:32

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: [I/O] как надо делать правильно?
СообщениеДобавлено: 15 апр 10 13:39 
Не в сети

Зарегистрирован: 7 апр 10 13:29
Сообщения: 2
Добрый день!

у меня вопрос следующего плана. Есть очень много входных данных (около 10^4 файлов различной длины). Данные надо прочитать, проверить определённым способом и в зависимости от результатов проверки либо записать в новый файл, либо проигнорировать. Есть также много компов. Каждый комп многоядерный (4 ядра). Данные лежат в сети (пусть будет гигбитный езернет) и примонтированны к каждому компу как NFS партишн. Хочется, чтоб всё было как можно параллельно.

Проблема в чтении файлов. Сейчас я делаю след образом. Пока ограничиваюсь одим компом, но в перспективе использовать надо больше. Каждый тред/поток читает свой собственный входной файл. Каждый поток решает что с ними делать и в случае успеха записывает в свой собственный выходной файл. В итоге имеется стрёмная производительность. Согласно top каждый тред/поток поедает только около 10 процентов процессорного времени, что свидетельствует о том, что имеют место простои.

Понятно, что всё дело в вводе/выводе. Потом я подумал, что пусть только один тред/поток читает данные и занимается их раздачей другим участникам.

Но прежде, чем ломать дрова, решил проконсультироваться у народа. Как делают нормальные люди с прямыми руками в таких случаях? Стоит ли искать истину в середине? Типа k потоков читают информацию и раздают её n-k потокам для обработки.

Кроме вышеупомянутых компов есть один очень мощный суперкомп с GPFS, который почти справляется в первым подходом. Согласно топ каждый поток поедает 75% CPU времени. Тем не менее хочется большего.

Теперь к техническим деталям. линукс, gcc, пока OpenMP, но в перспективе MPI или гибрид. Для I/O использую стандартную сишную библиотеку.

Извините, если объяснил невнятно. Если что, спрашивайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [I/O] как надо делать правильно?
СообщениеДобавлено: 15 апр 10 17:40 
Не в сети

Зарегистрирован: 11 дек 02 19:37
Сообщения: 872
Откуда: НИВЦ МГУ
rha писал(а):
Но прежде, чем ломать дрова, решил проконсультироваться у народа. Как делают нормальные люди с прямыми руками в таких случаях?

Выкидывают NFS. На нём большую скорость, тем более, на множестве мелких файлов не получите. Следующий этап - выкинуть винчестер NFS-сервера и подключить что-то побыстрее.

Цитата:
Кроме вышеупомянутых компов есть один очень мощный суперкомп с GPFS, который почти справляется в первым подходом. Согласно топ каждый поток поедает 75% CPU времени. Тем не менее хочется большего.

Хорошо бы посмотреть, а насколько I/O загружено на GPFS-сервере. подозреваю, что упираетесь уже там...

Цитата:
Теперь к техническим деталям. линукс, gcc, пока OpenMP, но в перспективе MPI или гибрид. Для I/O использую стандартную сишную библиотеку.


Тут - как удобнее... По факту - надо просто нечто, запускающее N процессов :) Лучше - на разных компьютерах, чтобы не толкаться в памяти, но в данном случае, думаю, это не принципиально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [I/O] как надо делать правильно?
СообщениеДобавлено: 15 апр 10 20:45 
Не в сети

Зарегистрирован: 7 апр 10 13:29
Сообщения: 2
спасибо за ответ! :)
Serg_Zhum писал(а):
Выкидывают NFS. На нём большую скорость, тем более, на множестве мелких файлов не получите. Следующий этап - выкинуть винчестер NFS-сервера и подключить что-то побыстрее.

интересная мысль. :)

Serg_Zhum писал(а):
rha писал(а):
Кроме вышеупомянутых компов есть один очень мощный суперкомп с GPFS, который почти справляется в первым подходом. Согласно топ каждый поток поедает 75% CPU времени. Тем не менее хочется большего.

Хорошо бы посмотреть, а насколько I/O загружено на GPFS-сервере. подозреваю, что упираетесь уже там...

Попробовав запустить только 16 нитей (вместо 32), занятость ядра возрасла до 93% (согласно top). Вы правы. Возможно имеет смысл использовать часть нитей для чтения, а часть для обработки.

Если какие-то тулзы, чтоб можно было посмотреть I/O загруженность на GPFS-сервере?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [I/O] как надо делать правильно?
СообщениеДобавлено: 16 апр 10 17:19 
Не в сети

Зарегистрирован: 28 май 05 21:12
Сообщения: 217
Откуда: Москва
Каков общий объем файлов?

Посмотреть загрузку IO можно банально top'ом или более расширенно iostat'ом.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB