Недавно понадобилось протестировать такую вот очень древнюю машинку. SunVTS на ней упорно не хотел запускаться - подвисал и потом падал. Как оказалось, в своем логе /var/sunvts/logs/sunvts.err он честно ругался на нехватку памяти и невозможность выделить ее с помощью malloc. Дело в том, что в Ultra 10 было установлено всего 256 мегабайт памяти, и притом значительная ее часть уже была запользована Solaris 10, а так как swap не был сконфигурирован, процесс vtsk (VTS Kernel) отказывался запускаться.
Но не тут-то было. Я зашел в bash-шелл и добавил swap:
root@ultra# swap -a /dev/dsk/c0t0d0s2
Т.к. был подсоединен неиспользуемый диск, я захватил его целиком, но лучше предварительно выяснить, на каком слайсе располагается своп с помощью утилитки format, после чего вручную стартовал sunvts:
root@ultra# /usr/sunvts/bin/startsunvts -t
Тут появилась еще одна проблема - при TERM=vt100 на моем ноутбуке никак не работали стрелки, так что навигация по TTY-интерфейсу SunVTS была несколько ограничена. Как оказалось, у SunVTS существует также командный интерфейс vts_cmd, чем я и воспользовался:
root@ultra# /usr/sunvts/bin/startsunvts -c
root@ultra# cd /usr/sunvts/bin/
Теперь можно выбрать нужные тесты:
root@ultra # vts_cmd disable_test all
root@ultra # vts_cmd enable_test Processor
root@ultra # vts_cmd enable_test Memory
root@ultra # vts_cmd enable_test Interconnect
Проверить их состояние:
root@ultra # vts_cmd list_tests
Logical Test:Disk;Enabled:False;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0),
Logical Test:Graphics;Enabled:False;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0),
Logical Test:Interconnect;Enabled:True;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0),
Logical Test:Ioports;Enabled:False;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0),
Logical Test:Media;Enabled:False;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0),
Logical Test:Memory;Enabled:True;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0),
Logical Test:Processor;Enabled:True;Scheduling Policy:Time=0;Stress:high; Progress:0;Status:idle(Pass=0/Error=0)
И запустить SunVTS
root@ultra # vts_cmd start
Осталось только настроить логирование вывода в терминале. Для этого я написал и запустил следующий скрипт:
#!/usr/bin/bash
while :
do
date
/usr/sunvts/bin/vts_cmd get_status Processor
/usr/sunvts/bin/vts_cmd get_status Memory
/usr/sunvts/bin/vts_cmd get_status Interconnect
sleep 300
done
Ну вот и все. Теперь каждые 5 минут на консоль выводится статус тестов. Можно со спокойной душой ехать на выходные!