Производительность записи SQLite примерно в 10 раз ниже в CentOS 6.3, чем в MacOSX 10.8.2

Резюме: транзакции вставки / удаления / обновления занимают в 10-15 раз больше времени в CentOS 6.3 по сравнению с MacOSX 10.8.2

Я использую SQLite (3.7.12) из ​​Perl (DBD::SQLite 1.37). У моего приложения есть несколько мест, где оно выполняет несколько записей (удаляет, обновляет и вставляет) в рамках транзакции.

Я сравнивал время между тремя машинами:

  • MBP: 2010 MacBook Pro с обычным диском
  • MBA: MacBook Air 2011 года с SSD
  • Сервер CentOS 6.3 (AMD Opteron 3250 с программным RAID-массивом 1 ТБ, 4 ядрами, 8 ГБ ОЗУ)

Транзакция на сервере CentOS занимает в 10–15 раз больше времени, чем MBP и MBA. Как и ожидалось, MBA немного быстрее, так как у него SSD. Если я отключу прагму синхронно, все будет хорошо и быстро, как и ожидалось.

Мы каждый раз выполняем одну и ту же последовательность тестов и получаем одинаковые базы данных. В то время, когда выполняется тест, на коробке CentOS еще мало что работает.

Тестируя производительность записи на диск на низком уровне, машина CentOS превосходит другие. Где мне искать дальше?

2 ответа

Решение

Проблема оказалась в том, что файловая система ext3 была сконфигурирована в / etc / fstab.

Я закончил тем, что провел много экспериментов и тестов производительности, чтобы лучше понять это, которое я написал по вине сервера:

https://serverfault.com/questions/486677/should-we-mount-with-data-writeback-and-barrier-0-on-ext3

Таким образом, файловая система была смонтирована с барьером = 1; изменение его на барьер =0 в сочетании с упорядоченными данными вернуло производительность, которую мы "пропустили".

Я бы начал сокращать зависимости.

Попробуйте запустить тест для базы данных в памяти.

Попробуйте запустить его в прямом C, чтобы убедиться, что это не так, как perl. Я в чем-то сомневаюсь, но издеваться должно быть легко.

Другие вопросы по тегам