Полезная информация


Назад Вперед Оглавление

14. Установка HogThreshold

Привет любителям DOSEMU !

Значение Hogthreshold можно изменять в файле DOSEMU.CONF. Это мера "аккуратности" DOSEmu. Иными словами, это попытка вернуться в линукс пока DOS простаивает, так чтобы эмулятор не пожирал все такты CPU ожидая на приглашении DOS.

Определение оптимального значения Hogthreshold включает немного магии (хотя и не так много). Один способ - пробовать разные значения и наблюдать за программой 'top' на другой консоли. Установка слишком низкого значения может умеренно снизить производительность Dosemu. Установка слишком высокого практически отключает код обработки простоя.

Можно сказать, что хорошее начальное значение это "половина Bogo-Mips". (Значение Bogo-Mips выводится при загрузке системы, это число, косвенно связанное с производительностью CPU.)

Установка значения в 0 полностью отключает обработку простоев. По умолчанию стоит 10.

Далее следует нечто вроде FAQ о том, как использовать значение 'HogThreshold' в файле конфигурации.

Если у вас есть еще вопросы - не стесняйтесь спрашивать ( <andi@andiunx.m.isar.de>).

Те из вас, кому нужно, чтобы dosemu работал с максимально возможной скоростью, просто ставят значение 0, тем же, кого заботит, что dosemu ест слишком много CPU, стоит поиграть с HogThreshold.

Зачем вообще нужно это HogThreshold, почему DOSEMU не может просто останавливаться в ожидении нажатия на клавишу?

Причина в том, как в DOS и многих приложениях устроено "ожидание нажатия".

Чаще всего это делается примерно так :

wait_for_key:
        ; do something
        mov ah,1
        int 0x16 ; check key status
        jz      wait_for_key ; jump if no key
        ; found a key
        mov ah,0
        int 0x16 ; get key

Это значит, что задача занята, ожидая нажатия.

С какого значения HogThreshold начинать ?

На 40 MHZ 486 начинайте с 10. Увеличивайте это число, если хотите, чтобы ваши DOS задачи работали быстрее, и уменьшайте, если считаете, что потребляется слишком много времени CPU.

На моем компьютере это не работает.

Вам нужен как минимум dosemu0.53pl40.

Почему просто не использовать очень низкие "HogThreshold" ? Нужно ли подбирать индивидуальные значения ?

Это замедлит работу DOS-задач. Хотя почему бы и нет, DOS и так медленный :-).

Как узнать использование CPU эмулятором ?

Просто запустите `top'. Он показывает загрузку cpu и памяти.

P.S. Если хотите изменить HogThreshold в процессе выполнения, вызовите

 mov al,12h
 mov bx,the_new_value
 int e6h
Это то, что делает speed.com. Если это интересно, взгляните на speed.c.

Примечание: если программа жестоко выполняет ожидание, вызывая цикл int16h fcn 1h без вызова прерывания простоя системы (int 28h), этот код не очень помогает. Если кто-нибудь столкнется с такой программой, дайте мне ( <scottb@eecs.nwu.edu> ) знать, и я перепишу кое-что в BIOS int16.


Назад Вперед Оглавление
Перевод: Валерий Груздев (grue@vpti.vladimir.ru)