Я думаю, что, возможно, взломал этот, и я не видел это решение где-либо еще. В Linux, как правило, есть две причины, по которым Токио начинает замедляться. Давайте пройдемся по обычным преступникам. Во-первых, если вы устанавливаете свой bnum слишком низким, вы хотите, чтобы он был как минимум равен половине количества элементов в хэше. (Желательно больше.) Во-вторых, вы хотите установить xmsiz так, чтобы он был близок к размеру массива сегментов. Чтобы получить размер массива корзины, просто создайте пустую базу данных с правильным значением bnum, и Токио инициализирует файл до соответствующего размера. (Например, bnum = 200000000 составляет около 1,5 ГБ для пустой базы данных.)
Но теперь вы заметите, что он все еще замедляется, хотя и немного дальше. Мы обнаружили, что хитрость заключалась в том, чтобы отключить журналирование в файловой системе - по некоторым причинам журналирование (на ext3) резко возрастает, когда размер вашего хеш-файла превышает 2-3 ГБ. (То, как мы это поняли, было всплесками ввода-вывода, не соответствующими изменениям файла на диске, наряду с пакетными процессорами демона kjournald)
Для Linux просто размонтируйте и перемонтируйте раздел ext3 как ext2. Создайте свою базу данных и перемонтируйте как ext3. Когда журналирование было отключено, мы могли без проблем создавать 180 МБ ключей размером с ключ.