[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Скорость чтения с диска < последовательно одним процессом> VS < параллельно несколькими>



Hello!

On Friday 20 March 2009 13:02:27 Покотиленко Костик wrote:
> О тесте: программа рекурсивно сканирует указанный каталог и составляет
> список обычных файлов, затем делит этот список на N частей. Далее
> программа создаёт N клонов с помощью fork(), каждый из которых читает
> файлы из своей части списка. По окончанию работы каждого клона выводится
> его статистика.

Необходимо оценить средний размер файла. Пусть это будет 8 кБ согласно 
паттерну работы с БД. Примечание: если реальные файлы больше, но запросов 
много, то с диска они все равно будут читаться блоками, кратно 4 кБ (по 
дефолту для ext3).

1. Необходимо обращаться к рандомному файлу. Каждый поток должен работать с 
полным списком, случайным образом выбирая файл для чтения. Примечание: если вы 
посмотрите паттерны доступа от интел, то увидите, что для моделирования работы 
с БД и файлсервера предполагается именно 100% рандомный доступ (в первом 
приближении стоит начинать именно с этого варианта). Учет этого фактора 
незначительно ускорит многопоточное чтение.

2. Необходимо учесть "популярность" файлов - большинство обращений происходит 
к одним и тем же файлам. Используйте гауссово распределение. Учет этого 
фактора значительно оптимизирует работу файлового кэша и многократно ускорит 
многопоточное чтение (в зависимости от параметров распределения). Это будет 
второе приближение. 

Best regards.

Reply to: