Quest for Understanding...

DTrace, DRM и шапка-невидимка.

четверг мар 06, 2008

 Во второй половине января Адам Левенталь, один из авторов и ведущих разработчиков DTrace,опубликовал заметку о некоторых особенностях реализации DTrace в Mac OS X («Mac OS X and the missing probes»), которая получила очень большое количество откликов, потому-что затронула тему, актуальную как для DTrace, так и для Open Source сообщества. Pекомендую заглянуть на его блог всем кого интересует DTrace в принципе. А тем, кто использует DTrace на Mac OS X стоит прочесть упомянутую статью просто всенепременно, если только вы этого уже не сделали.

Адам уже писал о реализации DTrace на Mac OS X в заметках на своём блоге (DTrace/Firefox/Leopard). Дадим волю воображению и представим, как солнечным калифорнийским утром, он наконец-то выкроил время, запустил iTunes, поставил любимую музыку и приступил к более пристальному изучению реализации своего детища на Mac OS X. В процессе экспериментов Адам обратил внимание на некоторые очень странные результаты. Запустив на двухядерном МacBook Pro скрипт

profile-1000
{
@ = count();
}

tick-1s
{
printa(@);
clear(@);
}

он с удивлением обнаружил, что profile-1000 срабатывает существенно меньшее количество раз вместо ожидаемых 2000 на процессоре с двумя ядрами. В попытке пролить свет на это загадочное явление, он вывел список всех работающих приложений при помощи команды

# dtrace -n profile-997'{ @[execname] = count(); }'

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

Это навело его на мысль, что некоторые приложения каким-то образом могут быть «спрятаны» от ока DTrace. Разобраться можно было только посмотрев исходный код и вот какой примечательный отрывок был обнаружен в теле функции dtrace_probe():

#if defined(__APPLE__)
/*
* If the thread on which this probe has fired belongs to a process marked P_LNOATTACH
* then this enabling is not permitted to observe it. Move along, nothing to see here.
*/
if (ISSET(current_proc()->p_lflag, P_LNOATTACH)) {
continue;
}
#endif /* __APPLE__ */

То есть процессы, которые помечены флагом P_LNOATTACH явным образом выводятся из под наблюдения.

Понятно, что этот код был вставлен для того, чтобы дать возможность тем, кто продаёт музыку или видео возможность защищать свои права. Беда в другом: способ, которым это было реализовано слишком сильно затрагивает корневые механизмы средства трассировки. Настолько, что полученные в итоге результаты уже не являются полностью объективным отображением происходящего в системе. Наверное, возможны другие реализации, которые могут и защитить права продавцов, и не повлиять на объективность получаемых результатов. Что поделаешьдополнительные граничные условия у задач встречаются, увы, довольно часто.

[1] Комментарии
Like this post? del.icio.us | furl | slashdot | technorati | digg

Сетевые драйверы для Solaris... Пара success stories

среда ноя 07, 2007

Установленный Solaris Developer Express напрочь оказался находить встоенную в старенькую MB Asus P4PE сетевую карту. После обширного гугления, изучения предложенных док и везения, жизнеспособным оказалось следующее:

- Автоматический, с использованием Sun Device Detection Tool
http://www.sun.com/bigadmin/hcl/hcts/device_detect.html.

-Вручную, если не повезло
>su root
# /usr/X11/bin/scanpci
.. skipped ..

pci bus 0x0002 cardnum 0x05 function 0x00: vendor 0x14e4 device 0x4401
Broadcom Corporation BCM4401 100Base-T

.. skipped ..
#

гугление на тему: "Broadcom Corporation BCM4401 100Base-T" Solaris
помогло найти ссылку

http://www.zshare.net/download/bfe-2-3-0a-tar-gz.html

что в итоге и оказалось тем, что я искал. Далее полез искать оригинал и нашел его здесь. Помимо этого на странице Free NIC drivers for Solaris

http://homepage2.nifty.com/mrym3/taiyodo/eng/

обнаружилась ещё множество драйверов, которые, быть может, пригодятся вам.


Теперь про ещё одну сетевую карту, Marvell Yukon. В инсталляторе 63-го билда драйверы для этой сетевой карты отсутствуют и даже device detection tool выдаёт грозное предупреждение об отсутствии оных где либо в пределах досягаемости. Однако драйвера для этой карточки под Solaris  можно скачать. Идем на  www.marvell.com, выбираем Product Famili: Yukon, Your platform: Solaris 8,9 and10 (платформа) и нажимаем Submit. Появится ссылка на драйвер (в моём случае это skgesol_x86v8.19.1.3.tar.Z).

Хотелось бы на этом месте сказать pkgadd -d SKGEsol и радоваться жизни, однако придётся проделать энное количество дополнительных действий. Во-первых, надо удалить старые сисконнектовские драйверы:

#pkgrm SK98sol

Во-вторых, вручную удалить в /etc/driver_aliases все упоминания о sk98sol. Теперь устанавливаем свежескачанный драйвер:

#pkgadd -d SKGEsol

В самом конце установки при попытке загрузить драйвер, система выдала сообщение driver loaded, but failed to attach (или что-то в этом роде).  Если у вас всё прошло успешно, то можно вас поздравить, если нет, то ищем наш Марвелл в системе вручную:

#prtconf -pv | less

(-p чтобы включить в выдачу информацию от firmware, -v для подробной информации)  и ищем выводе Ethernet controller,  у которого vendor-id: 000011ab. И смотрим, какой у этой карты device-id. (альтернативный вариант: запускаем /usr/X11/bin/scanpci и ищем строку Marvell). В моём случае device-id: 00004351 (device 0x4351). Теперь удаляем то, что поставилось само и перепривязываем драйвер к устройству вручную:

#rem_drv skge
#add_drv -i  '"pci11ab,4351"' skge

Проверяем, как работает:

#ifconfig skge0 plumb
#ifconfig skge0 <your_setup_here> up

[0] Комментарии
Like this post? del.icio.us | furl | slashdot | technorati | digg

Презентация на UAFOSS в Киеве

вторник ноя 06, 2007

Как и обещал, выкладываю презентацию для общего доступа ( StarOffice/OpenOffice, pdf). Чтобы немного освежить в памяти и проиллюстрировать презентацию, основные тезисы.

Sun рассматривает сотрудничество с Университетами, как долговременное партнёрство и предлагает, как свои новые технологии, так и свой свободный/открытый код для поддержки образовательного процесса и для того, чтобы академические организации могли изучать передовые технологии.

Примерами тому: StarOffice и OpenOffice, Solaris с DTrace и ZFS, Netbeans и построенная на его основе среда разработки Sun Studio, которая включает себя пакет сановских нативных компиляторов, поддерживает gcc и включает в себя инструменты нового поколения, как к примеру проект DLight. Помимо уже привычного практики открытого софта, Sun открыл спецификации своего нового процессора Niagara.

Открывать софт не просто, совсем не просто. К примеру, для того, чтобы открыть код JDK под GPLv2, ребятам пришлось заменить использовавшися ранее проприетарный код на открытый (FreeType, lcms, etc). Но это только часть айберга, для того, чтобы соблюсти букву закона, не только код, а каждый файл, включая картинки должен был пройти юридическую проверку, дабы не нарушить авторские права.

Зато открытый код потом обратно не закроешь, и он в большом смысле становится достоянием всего человечества. :-) И большое спасибо тем энтузиастам, которые поддерживают распространение открытого кода, в лице ребят из UAFOSS во главе с Вадимом Мошковым :

Ну и напоследок, если у вас остались неотвеченные вопросы, милости прошу, как в это блог, так и на ru_opensolaris или русский портал на OpenSolaris.org. Из неотвеченных вопросов был такой: почему Sun Studio нет в Solaris.

Ситуация такова: Sun выпускает несколько дистрибутивов, в Solaris Express Developer Edition (SXDE) Sun Studio входит и даже устанавливается в процессе инсталляции. В Solaris 10 в коллекции софта на DVD Sun Studio 12 не присутствует, его её  можно скачать. Это объясняется, тем, что на момент выхода Solaris 10, Sun Studio ещё не была выложена в открытый доступ, а ещё тем, что  совсем недолго осталось до следующего Solaris,  в котором  будет другой (но совместимый со предыдущим) пакетный менеджер ( проект Indiana)




[0] Комментарии
Like this post? del.icio.us | furl | slashdot | technorati | digg

Выходит новый релиз Sun Studio 12 и новый билд Sun Studio Express

понедельник июн 04, 2007

В этот понедельник Sun выпускает в свободное плавание Sun Studio 12, набор инструментария и оптимизирующих компиляторов C, C++ и Fortran для Solaris и Linux:

http://developers.sun.com/sunstudio

По результатам программы Early Access, количество участников которой увеличилось в 8 раз (по сравнению с аналогичной программой для Sun Studio 11), наибольший интерес в новом релизе вызвали следующие улучшения:


  • Новая интегрированная среда разработки (sunstudio)
  • Компиляторы для Linux (впервые в релизе Sun Studio)
  • Новые инструменты для многонитевого и многоядерного программирования, включая новый Thread Analyser (analyzer)
  • Увеличение производительности генерируемого кода до 25% в сравнении с Sun Studio 11 и до 80% в сравнении с GCC 4.1
  • Существенно улучшена совместимость с GCC

Sun Studio, ранее известная как Sun OS compilers, SPARC works, Sun Workshop, Forte Developer и Sun ONE Studio включает в себя следующие ключевые компоненты:


  • Распараллеливающие компиляторы C, C++ и Fortran
  • IDE нового поколения на базе NetBeans 5.5.1
  • Отладчик кода
  • Отладчик использования памяти (Memory debugger)
  • Поддержка OpenMP
  • Профилировщик
  • Оптимизированные библиотеки (включая Sun Performance Library)
  • Инструменты для поддержки многонитевого программирования.

Также в июне выпускается очередной билд Sun Studio Express 6/07, в который включает также D-Light, демонстрировавшийся Джеймсом Гослингом на недавно прошедшей конференции JavaOne SF 2007. Этот новый инструмент для профилирования использует технологию Dtrace и обединяет профилирование как самой системы, так и разрабатываемого приложения.

http://developers.sun.com/sunstudio/downloads/express.jsp

[0] Комментарии
Like this post? del.icio.us | furl | slashdot | technorati | digg