Здравствуйте, мои дорогие все.
Этим коротким зимним днём я решил вам поведать чем у меня всё это дело закончилось. Если вкратце, то на 2-х ядерных ускорение в 6 раз, на 8-ми ядерных ускорение 14 раз. На большем кол-ве ядер ускорей всё то же — 14 раз.
Что же мне помогло.
* Советы лучше гранулировать lock-и помогли. В некоторых местах lock-и обнимали слишком много кода.
* И
совет лочить сам словарьАвтор: Serginio1
Дата: 10.11.08
тоже очень помог.
* Дельный
совет попрофайлитьАвтор: Константин Л.
Дата: 10.11.08
указал на бэкап данных. Мы его убрали (точнее сделали опциональным, но по-умолчанию выключеным). Это дало прирост в 2-3 раза.
* Еще я кое-где поускорял работу со словарями — это дало прирост 1.5 раза.
* Советы разбить на несколько словарей и в конце их смержить (
здесьАвтор: samius
Дата: 10.11.08
и
здесьАвтор: vdimas
Дата: 11.11.08
) было сложно заимплементить. НО! Я ж вам не сказал, что на самом деле у меня не один файл, а больше 10. Каждый по 1.5ГБ размером, в каждом 50 млн записей. Поэтому всё оказалось проще. Т.е. мне не пришлось шамашнить со словарями, а просто запустил обработку каждого файла в свою собственную агрегацию (агрегация — это набор из кучи вложенных друг в друга словарей). Конечно, пришлось писать код, который мержил все данные в одну финальную агрегацию.
Вся работа отняла 3 недели, но осчастливило заказчика до состояния эйфории. А мне даже прилично так зарплату подняли.