OpenVZ Forum


Home » International » Russian » sysenter status
sysenter status [message #38994] Mon, 01 March 2010 02:07 Go to next message
seyko2 is currently offline  seyko2
Messages: 188
Registered: February 2007
Location: Moscow
Senior Member

В книгах пишут, что sysenter был внедрён из-за проблем со скоростью выполнения int 0x80 на Pentium 4. И вдруг обнаруживаю, что FreePascal не обнаруживает данной фичи в 028stab067.4 Начинаю сканировать исходники ядра и оказвается, что возможность SEP (смотрим флаг SEP в /proc/cpuinfo)сбрасывается при наличии exec-shield (которая включена по умолчанию). Ладно. Грузимся с параметром exec-shield=0 и в /proc/cpuinfo появляется флаг sep.
Прекрасно.

Однако возникает вопрос: а как же со скоростью? Нынешние процесооры уже не имеют проблем с int 0x80 и sysenter как бы уже не нужен? А если нужен, то какого рожна меня молчком тормозят как бы в моё же благо?

Второе замечание: всегда считал, что в /proc/cpuinfo отображаются рельные возможности процессора. А полчучается, что там часть флагов сброшена (а вот PAE присутствует, хотя моё ядро и не использует этот режим). Бардак, однако...

Но и после появления SEP во флагах, FreePascal не обнаруживает точку входа в sysenter. glibc он не использует и ищет данные в ElfAuxilaryVector (его ядро формирует по аналогии с enviroment).И там нет данныз о sysenter. Если дать ldd на бинарник
ldd /bin/sh
linux-gate.so.1 => (0xffffe000)
libdl.so.2 => /lib/libdl.so.2 (0xb7fb2000)
libc.so.6 => /lib/libc.so.6 (0xb7e7c000)
/lib/ld-linux.so.2 (0xb7fba000)
(пример из интернет для рабочего sysenter) то этого linux-gate.so не выдаётся.

Вопрос: как у нас на сегодняшний день ситуация с sysenter? ПросвЯтите пожалуйста...

[Updated on: Mon, 01 March 2010 19:27]

Report message to a moderator

Re: sysenter status [message #38997 is a reply to message #38994] Mon, 01 March 2010 19:22 Go to previous messageGo to next message
seyko2 is currently offline  seyko2
Messages: 188
Registered: February 2007
Location: Moscow
Senior Member

Как оказалось, если выполнить

echo 1 > /proc/sys/fs/vsyscall

то всё начинает работать. Если посмотреть на исходники для других архитектур, то там sysenter включается по умолчанию (смотрим linux/include/asm.../elf.h на предмет AT_SYSINFO).Например всё по умолчанию включено для ia64, powerpc.

Иинтересно, что если смотреть исходники, то там sysctl_at_vsyscall в единице. Однако после загрузки в /proc/sys/fs/vsyscall видим 0 (этот файл вроде бы и отображает состояние sysctl_at_vsyscall).
Глупая ситуация.

PS: будет время, замерю количество вызовов gettimeofday за единицу времени в состоянии по умолчанию и в состоянии с разрешённым sysenter (то есть на сколько тормозят по умолчанию всех тех, кто не пользуется фирменным дистрибутивом).

[Updated on: Mon, 01 March 2010 19:42]

Report message to a moderator

Re: sysenter status [message #39105 is a reply to message #38997] Mon, 15 March 2010 20:21 Go to previous messageGo to next message
seyko2 is currently offline  seyko2
Messages: 188
Registered: February 2007
Location: Moscow
Senior Member

Дошли руки до замеров. И странная картина получилась:

на ядре 2.4.32 и Pentium III 800 MHz один syscall занимает 0.6 мкс
на ядре 2.4.32 и AMD-K6-III 400 MHz один syscall занимает 1.0 мкс
на ядре 2.6.18ovz и Celeron 1000 MHz один syscall занимает 1.5 мкс
на ядре 2.6.18ovz и AtomN270 1600 MHz один syscall занимает 1.5 мкс

Два последних случая -- при включенном vsyscall (sysenter). Если выключить, то будет чуть помедленнее -- 1.7 мкс.

Проверка проводилась измерением времени одного миллиона вызовов gettimeofday(). Ядро 2.6.18ovz -- последнее из серии rhel5.
Завтра попробую это ядро на первых двух машинах. Наверно надо проверить и чистое ядро 2.6.18. Что-то уж большая разница: в три раза Sad
Re: sysenter status [message #39116 is a reply to message #39105] Tue, 16 March 2010 21:32 Go to previous messageGo to next message
seyko2 is currently offline  seyko2
Messages: 188
Registered: February 2007
Location: Moscow
Senior Member

Про Celeron 1000 MHz наврал -- при включенном sysenter время одного syscall 0.8 мкс. А вот про N270 (Atom) 1600 MHz -- всё верно. У того что int 0x80, что sysenter - всё равно один syscall занимает 1.5 мкс. И это ещё хорошо. Старый Celeron 1700 MHz c syseneter тоже 1.5 мкс выдаёт, а при int 0x80 вообще 2.2 мкс.

Вывод: дует Intel (вместе с ЦРУ) нашего брата. Вроде частоту прибавляет, а реально - тормозит. И хвалёный sysenter не помогает. Старый AMD-K-III 400 MHz за секунду больше системных вызовов выполнит, чем современные 1600 MHz

Да, вопрос: exec-shield -- это стандартная фича или чья? Кто додумался включить её по умолчанию?

[Updated on: Tue, 16 March 2010 21:40]

Report message to a moderator

Re: sysenter status [message #39499 is a reply to message #39116] Sun, 02 May 2010 09:57 Go to previous message
pavel.odintsov is currently offline  pavel.odintsov
Messages: 24
Registered: February 2010
Junior Member
seyko2 wrote on Tue, 16 March 2010 16:32
Про Celeron 1000 MHz наврал -- при включенном sysenter время одного syscall 0.8 мкс. А вот про N270 (Atom) 1600 MHz -- всё верно. У того что int 0x80, что sysenter - всё равно один syscall занимает 1.5 мкс. И это ещё хорошо. Старый Celeron 1700 MHz c syseneter тоже 1.5 мкс выдаёт, а при int 0x80 вообще 2.2 мкс.

Вывод: дует Intel (вместе с ЦРУ) нашего брата. Вроде частоту прибавляет, а реально - тормозит. И хвалёный sysenter не помогает. Старый AMD-K-III 400 MHz за секунду больше системных вызовов выполнит, чем современные 1600 MHz

Да, вопрос: exec-shield -- это стандартная фича или чья? Кто додумался включить её по умолчанию?



Я так полагаю, вопрос не по OpenVZ. А по RHEL kernel и направлять его надо в Red Hat bugzilla. Так как OpenVZ все же меняет ядро, но не до такой же степени Smile


Previous Topic: OpenVZ 2.6.32 + ps aux не работает в контейнере
Next Topic: swap/mem
Goto Forum:
  


Current Time: Mon Jul 22 19:24:00 GMT 2024

Total time taken to generate the page: 0.02451 seconds