Назад | Перейти на главную страницу

Почему domU быстрее dom0 на IO?

Я установил debian 7 на физическую машину. Это конфигурация машины:

Я установил postgresql, создал большую базу данных (более 1 ГБ). У меня есть запрос SQL, выполнение которого занимает много времени (оператор SELECT, поэтому он считывает данные только из базы данных). Выполнение этого запроса занимает около 5,5 секунд. Затем я установил XEN, создал domU с другим дистрибутивом debian. В этой ОС я также установил postgresql с той же базой данных. Для выполнения того же запроса SQL требуется всего 2,5 секунды.

Я проверил ядро ​​как на dom0, так и на domU. uname-a возвращает «Linux debian 3.2.0-4-amd64 # 1 SMP Debian 3.2.41-2 + deb7u2 x86_64 GNU / Linux» в обеих системах. Я проверил параметры ядра, они примерно одинаковые. Для тех, которые имеют отношение к делу, я изменил их значения, чтобы они совпадали в обеих системах, используя sysctl. Я не увидел изменений (запросы по-прежнему занимают столько же времени).

После этого я проверил файловые системы. Я использовал ext3 на domU. По-прежнему без изменений.

Я установил hdparm и запустил hdparm -Tt в обеих системах, на всех моих разделах в обеих системах, и получил аналогичные результаты.

Я застрял, я не знаю, что изменилось и что могло быть причиной такой большой разницы.

Дополнительная информация:

Спасибо

РЕДАКТИРОВАТЬ:

Как предположил Кшиштоф Ксенжик, это могло быть связано с какой-то системой кеширования файлов. Я запустил команду dd, чтобы проверить скорость чтения и записи.

Вот domU:

root@test1:~# dd if=/dev/zero of=/root/dd count=5MB bs=1MB
^C2020+0 records in
2020+0 records out
2020000000 bytes (2.0 GB) copied, 18.8289 s, 107 MB/s

root@test1:~# dd if=/root/dd of=/dev/null count=5MB bs=1MB
2020+0 records in
2020+0 records out
2020000000 bytes (2.0 GB) copied, 15.0549 s, 134 MB/s

А вот и dom0:

root@debian:~# dd if=/dev/zero of=/root/dd count=5MB bs=1MB
^C1693+0 records in
1693+0 records out
1693000000 bytes (1.7 GB) copied, 8.87281 s, 191 MB/s

root@debian:~# dd if=/root/dd of=/dev/null count=5MB bs=1MB
1693+0 records in
1693+0 records out
1693000000 bytes (1.7 GB) copied, 0.501509 s, 3.4 GB/s

В чем может быть причина этой системы кеширования? И как это «исправить»? Можем ли мы применить это к dom0?

РЕДАКТИРОВАТЬ 2:

Я сменил тип виртуального диска. Для этого я последовал Эта статья.

Я сделал dd if=/dev/vg0/test1-disk of=/mnt/test1-disk.img bs=16M Затем в /etc/xen/test1.cfg я изменил параметр диска, чтобы использовать file: вместо phy: он должен был удалить кеширование файлов, но я все равно получаю те же числа (domU намного быстрее для Postgres)

Вероятно, из-за кеширования файлов. Даже если система baremetal и система в domU имеют одинаковые конфигурации в отношении кеширования и т. Д., Некоторые файловые операции в domU будут выполняться быстрее, чем на baremetal, поскольку гипервизор прозрачно кэширует запросы ввода-вывода из системы domU. Вы можете проверить это с помощью команды dd.

Не знаю, но это очень странное поведение. Мне любопытно понять, почему dd test dom0 быстрее, чем domU, а Postgres - наоборот.

О Postgres я думаю так же, как Кшиштоф Ксенжик. Это происходит, когда есть перекрытие кеша в файловой системе или что-то с оперативной памятью. В ваших тестах вы отключаете кеш linux?

Какая память выделена для dom0 и domU?