понедельник, 26 мая 2008 г.

Безопасное извлечение...

После того, как USB носитель безопасно извлекаеся из Windows, он гаснет, то бишь переходит в отключенное состояние. С одной стороны это минус, чтобы использовать носитель снова, его нужно выткнуть и воткнуть. Но с другой стороны не так уж часто это и нужно, и это правильно.

В то же время все линуксоиды в один голос твердят - размонтировал и спи спокойно.

Практика показывает, что на linux можно сделать все, правда никто не знает как. Разрабатывая по работе проходной шифратор USB наткнулся на проблему безопасного извлечения. Сперва решил ее тривиальным образом - через команду с консоли. Но это не тот уровень, хотелось бы чтобы устройство извлекалось само.

Переписка с разработчиком драйвера USB девайса для pxa270, в попытках выяснить что же шлет windows устройству, не дала никаких результатов. Но отладочная инфрмация g_file_storage дала. Выяснилось, что после безопасного отключения Windows переводит устройство в состояние suspend.

Правда, выяснилось так же, что с пользовательского уровня эта информация недоступна. Не проблема. прикрутил запись в sysfs - стала доступна. После этого я всю голову сломал как заставить std::cin неблокированно возвращать состояние буфера, поскольку паралельно надо еще мониторить файл из /sys, но ничего не придумал отключил консоль полностью. Но Уперся в то, что через Windows то все хорошо отключается, а вот через linux - никак. отмонтировал, но кто сообщит устройству что ему надо отключаться?

Поиск в интернете почти ничего не дал, кроме одного упоминания. Дескать echo suspend > /sys/class/usb_device/usbdev$BUS.$DEVICE/device/power/level заставит устройство уснуть. Было бы хорошо, но 'USB device class-devices' объявлен в ядре как устаревший, эксперементировать с ним не интересно. 'USB selective suspend/resume and wakeup' объявлено как эксперементальное, но нигде толком не написано как им управлять.

Но, методом научного тыка выяснилось, что файл /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3/power/level обладает аналогичными функциями, и может быть найден через /sys/block/sda/device (симлинк), который указывает на /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3:1.0/host8/target8:0:0/8:0:0:0, относительно /sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3 это прямой путь, без симлинков. Иначе я не придумал как можно автоматически определить все эти многочисленные идентификаторы. lsusb такой информации не предоставляет, да и его вывод всеравно надо парсить.

Естественно, все это справедливо только для моей системы, ну кроме разве только sda.

Немного непонятным осталось то, как разбудить устройство снова. echo on > power/level включает питание на устройстве, но монтироваться устройство после этого не желает. Правда где-то я видел файл rescan, послав 1 в который можно заставить его пересканировать USB storage. Ну для меня это не очень актуально, оставляю эту тему для интересующихся.

PS: Правда, где-то в интернете вычитал, что дескать Windows Vista не отключает питание от устройств, это засада.

понедельник, 12 мая 2008 г.

Производительность VCS

Читая новости OpenNet, наткнулся на несколько ссылок: bzr, git, and hg performance on the Linux tree, git/bzr historical performance comparison, и несколько более косвенно Distributed Version Control Systems: A Not-So-Quick Guide Through. У меня так и не дошли руки до полноценного исследования производительности. В данных обзорах немного расстраивает лишь отсутствие monotone.

Смущает меня только один момент. По моим скромным подсчетам на построение списка файлов уходит сравнительно немного времени, для линукс ядра это порядка 1 секунды (сильно округляю).

Но чтобы оценить изменение рабочего каталога относительно HEAD репозитория, необходимо сравнить содержимое файлов, ну это в идеальном варианте, все остальные варианты оставляют шансы на ошибку. Причем нам главное знать факт изменения файла. Изменение длины явно говорит о том, что файл изменился, так же как и изменение хеша. Но с другой стороны изменение времени вообще ни о чем не говорит, а совпадение хеша вовсе не говорит о том, что файлы идентичны. Может быть именно последний момент подталкивает некоторые системы контроля оперировать не хешами а номерами?

Но раз уж системы оперируют хешами как версиями файлов, видимо приходится принять условие, что совпадение хеша подтверждает совпадение файла. Но проблема в том, что рассчет хеша всех файлов дерева linux занимает порядка минуты, ну если соптимизировать - ну 40 секунд к примеру. И становится непонятным, как git, bzr и hg умудряются показывать статус за считанные секунды (1-5 сек).

Вероятно, они всетаки доверяют времени, и файлы с неизменным временем автоматически считаются неизмененными. Вообще я не склонен доверять времени, время может съехать, ИМХО Makefile работают совсем не правильно. :) Ну это наверное мое извечное всеотрицание. А если рассуждать трезво, то меня вовсе не радует перспектива ждать по 40 секунд для просмотра статуса изменений. Поэтому использование таймстампов файлов - это меньшее из зол.

Еще меня конечно сильно смущает возможность коллизий хеша. Насколько она велика, в лоб эту проблему конечно не решить, но не может ли появиться в системе контроля два разных файла с одинковым хешем? Это ведь может нарушить всю структуру репозитория...

среда, 7 мая 2008 г.

Бесшумный компьютер (часть 2)

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

Процессор у меня, как я уже говорил, не слишком мощный. Я его (компьютер) слепила из того, что было :)... Pentium4 2Hz, из ранних, еще даже без HT. Подозреваю что с топовыми моделями процессоров фокус с пассивным охлаждением может и не прокатить. Но все зависит от того, что ставится во главу угла. Производительность - враг бесшумности.

Кроме того при покупке радиатора стоит обратить внимание на раскладку материнской платы и на расположение компонентов в корпусе. Бывает так, что непосредственно над процессором нависает блок питания, что делает просто физически невозможным установку 15-сантиметрового радиатора. Бывает что блок питания или платы расширения находятся слишком блозко к сокету, что не дает возможность воткнуть туда низкий и широкий радиатор. Но мне в этом плане повезло, Mugen имеет размеры 12х8см, то есть по ширине он практически соответствует стандартному. Блок питания был близко, но это не помешало установить радиатор. Правда блок питания всеравно пришлось откручивать, чтобы иметь возможность закрепить радиатор и разъемы питания теперь не доступны без снятия БП. Вообще мой корпус невелик и не дорог. Есть дорогие просторные и тяжелые (сделанные из толстого, пятимиллимерового аллюминия) корпуса, но пока я постараюсь обойтись без них.

Были некоторые опасения на тот счет, что эта 950-граммовая дура будет под своим весом отгибать материнскую плату. Но нет, тугой крепеж, надежно закрепленная материнская плата и радиатор держится и не собирается падать. А чтобы спалось спокойнее, я сделаю вот что. Я уже упоминал что у меня маленький и дешовый корпус. Он настолько мал, что крышка теперь не закрывается. Но я потом прорежу в крышке отверстие, он уже не сможет упасть, а если сделать отверстие поточнее, то он вообще будет опираться на крышку корпуса, а заодно передавать ему свое тепло.

Для вентилятора место осталось, только я не вижу в нем необходимости. Как я не пытался его разогреть - lm_sensors показывает 36 градусов. Может врет конечно, но BIOS показывает не намного больше, 43. Тот же самый lm_sensors, с тем же самым драйвром датчика на работе показывает 58 градусов в состоянии покоя, наверное много пыли в системном блоке.

Теперь потихоньку думаю, когда я смогу приобрести себе безвентиляторный блок питания. Думаю в июле смогу, до июля осталось не очень много времени. И тогда последний вентилятор исчезнет из моего компьютера и самым громким устройством останется наверное клавиатура. Шучу конечно, самым громким будет винт, но с его шумом тоже можно будет побороться.

В любом случае история еще не закончена, продолжение следует.

понедельник, 5 мая 2008 г.

Бесшумный компьютер

Давно уже мне надоело играть в игры, наигрался с 1987 года. Поэтому на производительность мне по большому счету наплевать. Работаю на железе пятилетней давности и мне его хватает. Если будет не хватать, добавлю памяти, для девелоперских задач это, в большинстве случаев, оказывается весьма эффективно. Это конечно вовсе не обозначает что я откажусь от более мощного железа :), производительность это конечно хорошо, но предпочитаю довольствоваться тем, что есть.

Последнее время мне больше хочется обзавестись тихим компьютером. Современные компьюетры напичканы вентиляторами, куда деваться от этого шума - не знаю. А ведь раньше было время, когда вентилятор в блоке питания был единственным...

В принципе идеи тихого компьютера не новы. Их неоднократно мусолили на ixbt, и на разных других, посвященных железу, интернет изданиях. Но нигде не обсуждается полный отказ от вентиляторов, что кажется мне вполне возможным.

Свой путь к тихому компьютеру я начал с жесткого диска, купив себе один из самых тихих дисков Segate Barracuda 7200.9 80Гб. Надо сказать, что объем мне тоже достаточно пофиг. Любой объем всеравно кончается и его приходится разгребать. Дык 50 гиг файлопомойки разгребать проще чем несколько сотен :).

Корпусной вентилятор я отключил давно, не хватало мощности родного блока питания от этого дешового корпуса. Активных вентиляторов осталось только два, вентилятор блока питания и вентилятор собственно на процессоре. Хотя нет, вру... был еще вентилятор на AGP-шной видеокарте (Radeon 9200), но он зашумел и я его выкинул, оставил один радиатор, надеюсь, что она не сгорит, на крайний случай существуют безвентиляторные решения и для видюх.

Но это все была присказка. Пришлось мне налаживать один компьютер, там умерла мать, у меня к счастью была лишняя мать, с Celeron 2.4GHz на борту, относительно прежней конфигурации это всеравно получался апгрейд, не о чем жалеть. Но возникла проблема, у стандартного кулера отломился один из крючков, крепящий его к ложементу - в морг. Поиски по окрестным магазинам кулера на 478 сокет не дали результатов, и пришла безумная идея. Купить себе в комп крутой кулер, если уж не без вентилятора, то хотя бы как можно более тихий. Но поиск в интернете обнадежил. Оказалось, что существуют решения, допускающие работу без вентиляторов вообще. К примеру Thermaltake SonicTower, последняя ревизия которого к сожалению не ставится на мой сокет. Но были и другие. Вооружившись этим знанием, я отправился на Савеловский рынок и не долго думая купил Scythe Mugen.

Фуф, хватит пожалуй на сегодня. Продолжение следует.