Home

Advertisement

Не люблю проприетарщину/покажи свои сорцы - Performance counters

> Recent Entries
> Archive
> Friends
> User Info

June 17th, 2009


Previous Entry Add to Memories Tell a Friend Next Entry
11:51 pm - Performance counters
В ядре 2.6.31 появится новая подсистема мониторинга "Performance counters". Эта штука позволяет использовать аппаратные возможности процессоров для контроля над некоторыми аспектами исполнения кода (кол-во потреблённых циклов, попаданий в кэш и т.п.), а также для очень точного профилирования кода.

В -rc1 код уже смержен и его можно использовать. На скорую руку с использованием cffi накидал проверочную библиотеку:
* (require :perfcounters)

("PERFCOUNTERS")

* (in-package :perfcounters)

#<PACKAGE "PERFCOUNTERS">

* (time+ (time (compile-file "example.lisp")))

Evaluation took:
  0.062 seconds of real time
  0.060991 seconds of total run time (0.056991 user, 0.004000 system)
  [ Run times consist of 0.014 seconds GC time, and 0.047 seconds non-GC time. ]
  98.39% CPU
  41 forms interpreted
  89 lambdas converted
  135,805,483 processor cycles
  4,037,280 bytes consed
  
Performance monitor:
  76,656,816 CPU cycles consumed
  66,294,621 instructions executed
  3,622,533 cache hits
  114,287 cache misses
  6,105,628 branch instructions
  316,953 branch missess
  55,965,525 bus cycles
  
NIL
Вот такая клёвая штука, и это только малая часть возможностей! Теперь можно более детально вылизывать код, учитывая такие важные показатели, как отношение удачных/неудачных обращений в кэш и предсказаний условного перехода.

Надо будет спереть дизайн из демонстрационной утилиты linux-2.6/tools/perf, там много интересных игрушек сделано :)

UPD: http://repo.or.cz/w/perfcounters.git
Current Music: Enslaved "RUUN" - Essence
Tags: ,

(Leave a comment)

Comments:


[User Picture]
From:[info]abraham1901
Date:June 17th, 2009 05:59 pm (UTC)
(Link)
отличная штука, пасиба.
[User Picture]
From:[info]swizard
Date:June 17th, 2009 06:00 pm (UTC)
(Link)
Либо я чето не понял, либо во фряхе такое давно уже есть: http://wiki.freebsd.org/PmcTools
[User Picture]
From:[info]13_49
Date:June 17th, 2009 06:13 pm (UTC)
(Link)
В Линуксе тоже (perfmon2, 3), и давно, но у perfmon концептуальный недостаток есть: использует ptrace. У perfcounters'ов более прямая реализация, более мощные авторы и, по ходу дела, более светлое будущее.
[User Picture]
From:[info]voins
Date:June 17th, 2009 06:15 pm (UTC)
(Link)
А ещё это можно встроить в google perfomance tools и строить забавные картинки. Обзательно нужно будет попробовать. Спасибо за информацию.
[User Picture]
From:[info]iakovz
Date:June 17th, 2009 08:24 pm (UTC)
(Link)
Intel VTune
сто лет в обед ;-)
[User Picture]
From:[info]13_49
Date:June 18th, 2009 04:06 am (UTC)
(Link)
В Лиспе require чего делать? И чего делать на процессорах, отличных от Intel?

Сами каунтеры в железе появились (в неинтеловском, и в твоём масштабе ;), наверное, лет 300 назад.

> Go to Top
LiveJournal.com

Advertisement