FreeBSD под VMWare: Теперь часы работают как часы

Снова добрался до виртуальной FreeBSD, а там.. ужос! Часы отстали на 4 часа.. В предыдущем посте о часах я выбирал разные таймеры. Ни один не работает как нужно. Что делать?

TSC

Я остановился на таймере TSC. Он должен работать на частоте процессора. dmesg рапортует о частоте:

Timecounter "TSC" frequency 3302974606 Hz quality 800


Этот параметр можно посмотреть через sysctl

~> sysctl -a | grep tsc_<br />
machdep.tsc_freq:  3302974606


При таком значении часы отстают, значит оно должно быть меньше.

Fix

Открываем файл vmware.log и ищем строку, содержащую TimeTracker

Sep 14 11:11:05: vmx| TimeTracker host to guest rate conversion  46219175637833 @ 2999990000Hz -> 46219175637833 @ 2999990000Hz<br />
Sep 14  11:11:05: vmx| TimeTracker host to guest rate conversion ((x * 2147483648)  >> 31) + 0


Копируем магическое 🙂 2999990000 и записываем его в sysctl:

~> sysctl machdep.tsc_freq=2999940000<br />
machdep.tsc_freq:  3302974606 -> 2999940000<br />
~> echo “sysctl machdep.tsc_freq=2999940000”  >> /etc/sysctl.conf<br />
# one more trick:<br />
~> echo "kern.hz=100" >> /boot/loader.conf


И синхронизируем часы с сервером времени, например:

ntpdate -bs 132.236.56.250


Все, теперь часы работают как часы 🙂

За тестовый час они не отстали и не обогнали контрольный сервер ни на секунду.

sed’ина в бороду

sed – очень полезный и мощный потоковый редактор. понять насколько удобным, мощным и гибким он является, вы сможете испытав рецепты из нижеприведенной статьи. Уверен он вам (*nix’оидам) пригодится в повседневной жизни 🙂 или при написании shell-скриптов.

Читать далее

time is ticking out

Возвращаясь к вопросу отставания часов в FreeBSD (в частности под VMWare). Хэндбук дает подсказку по поводу почему часы могут показывать неправильное время. Дело в том, что в системе несколько таймеров, а выбранный таймер ведет себя на вашей системе не так, как вы ожидаете. Выход – попробовать другой таймер и проследить за результатом.

Посмотрите какие таймеры присутствуют на вашей системе:

<br />
~> dmesg | grep Timecounter<br />
Timecounter "i8254" frequency  1193182 Hz quality 0<br />
Timecounter "ACPI-fast" frequency 3579545 Hz quality  1000<br />
Timecounter "TSC" frequency 3035844535 Hz quality 800<br />
Timecounters  tick every 1.000 msec<br />


Проверьте, какой таймер используется:

<br />
~> sysctl kern.timecounter.hardware<br />
kern.timecounter.hardware: ACPI-fast<br />


Установите другой таймер:

<br />
~> sysctl -w kern.timecounter.hardware=i8254<br />
kern.timecounter.hardware: ACPI-fast –> i8254<br />


Добавьте настройки в файл /etc/sysctl.conf, чтобы таймер использовался при загрузке системы:

<br />
kern.timecounter.hardware=i8254<br />


Синхронизируйте время на машине:

<br />
ntpdate -bs 132.236.56.250<br />


Тепеть подождите несколько дней и проверьте, будут ли отставать ваши часы.

Tricks with trickle

Безлимитный интернет в офисе это конечно хорошо :). Но если несколько сотрудников, любителей покачать, забивают весь канал, это не есть хорошо. В таких случаях помогает использование менеджеров закачек, в которых есть регулировка скорости скачивания.

А если вы качаете что-то в консоли, например wget’ом или fetch’ем? В этом случае вам поможет trickle.

Установка

~> cd /usr/ports/*/trickle
~> make install clean
# или:
~> pkg_add -r trickle

Использование

trickle -s -d 100 portsnap fetch update

Теперь загрузка не будет превышать 100 Кб/с. Полочку можете понаблюдать с помощью nload:

~> cd /usr/ports/*/nload
~> make install clean
~> rehash
~> nload em0
# где em0 - имя вашего интерфейса

Для ограничения upload-скорости используйте ключ –u.

По мотивам заметки trickle-traffic-limiter.

P.S.

wget имеет встроенную возможность ограничения скорости закачки, ключ —limit-rate

—limit-rate=20k will limit the retrieval rate to 20KB/s.

Google Mail is down

GMail он же Google Mail сейчас лежит и пока не известно, когда восстановят нормальную работу. Посмотреть состояние сервиса можно по ссылке: https://www.google.com/appsstatus#di=1&hl=en

Google Mail: Service outage

Simon says? Cow says!

Говорит и показывает корова

cowsay – бесполезный 🙂 перловый скрипт, который выводит заранее напечатанный текст в виде ASCII-картинки говорящей или думающей коровы. И не только коровы, а любого персонажа из заготовленного набора.

Оригинальная корова:

~> set M="Hello, world\!"
~> cowsay $M
 _______________
< Hello, world! >
 ---------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Читать далее