/proc/timer_stats - آمار
زمانسنجها
- /proc/timer_stats (از
لینوکس 2.6.21 تا
لینوکس 4.10)
- این یک
قابلیت
اشکالزدایی
است تا
استفاده (یا
سوءاستفاده)
از
زمانسنجها
در یک سیستم
لینوکس را
برای
توسعهدهندگان
هسته و فضای
کاربری
آشکار سازد.
این قابلیت
میتواند
توسط
توسعهدهندگان
هسته و فضای
کاربری
برای
اطمینان از
اینکه کد
آنها
استفاده
بیمورد از
زمانسنجها
نمیکند،
به کار رود.
هدف،
جلوگیری از
بیدارباشهای
غیرضروری و
در نتیجه
بهینهسازی
مصرف انرژی
است.
- در صورت
فعال بودن
در هسته
(CONFIG_TIMER_STATS)، اما
بدون
استفاده
بودن،
سربار زمان
اجرای آن
تقریباً
صفر بوده و
سربار
ساختار
داده
نسبتاً
اندکی دارد.
حتی در صورت
فعال بودن
جمعآوری
دادهها در
زمان اجرا،
سربار اندک
است: تمام
قفلگذاریها
به ازای هر
پردازنده (per-CPU)
انجام
میشود و
جستوجو
بهصورت
درهمسازی
(هش) است.
- فایل /proc/timer_stats هم
برای کنترل
قابلیت
نمونهبرداری
و هم برای
خواندن
اطلاعات
نمونهبرداریشده
استفاده
میشود.
- قابلیت timer_stats
هنگام
راهاندازی
سیستم
غیرفعال
است. یک
دوره
نمونهبرداری
را میتوان
با استفاده
از دستور
زیر آغاز
کرد:
-
# echo 1 > /proc/timer_stats
- دستور زیر
یک دوره
نمونهبرداری
را متوقف
میکند:
-
# echo 0 > /proc/timer_stats
- آمارها را
میتوان با
دستور زیر
دریافت
کرد:
-
$ cat /proc/timer_stats
- تا زمانی که
نمونهبرداری
فعال است،
هر بار
خواندن از
/proc/timer_stats
آمارهای
تازه
بهروزرسانیشده
را نشان
خواهد داد.
به محض
غیرفعال
شدن
نمونهبرداری،
اطلاعات
نمونهبرداریشده
تا زمان
آغاز یک
دوره
نمونهبرداری
جدید
نگهداری
میشود. این
امر امکان
چندین بار
خواندن را
فراهم
میسازد.
- نمونه
خروجی از
/proc/timer_stats:
-
$ cat /proc/timer_stats
Timer Stats Version: v0.3
Sample period: 1.764 s
Collection: active
255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer)
71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer)
58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer)
4, 1694 gnome-shell mod_delayed_work_on (delayed_work_timer_fn)
17, 7 rcu_sched rcu_gp_kthread (process_timeout)
...
1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn)
1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn)
1029 total events, 583.333 events/sec
- ستونهای
خروجی
عبارتند
از:
- [1]
- تعداد
رویدادها،
که بهصورت
اختیاری (از
لینوکس 2.6.23) با
حرف 'D' دنبال
میشود اگر
این یک
زمانسنج
قابل تعویق
(deferrable) باشد؛
- [2]
- شناسه
فرایند (PID)
فرایندی که
زمانسنج
را
مقداردهی
اولیه کرده
است؛
- [3]
- نام
فرایندی که
زمانسنج
را
مقداردهی
اولیه کرده
است؛
- [4]
- تابعی که
زمانسنج
در آن
مقداردهی
اولیه شده
است؛ و
(درون
پرانتز)
تابع
بازخوانی
(callback) که با
زمانسنج
مرتبط است.
- در طول چرخه
توسعه
لینوکس 4.11،
این فایل به
دلیل
نگرانیهای
امنیتی حذف
شد، زیرا
اطلاعات را
در سراسر
فضاهای نام
افشا
میکرد.
علاوه بر
این، امکان
دستیابی به
اطلاعات
مشابه از
طریق
امکانات
ردیابی
درونهستهای
مانند ftrace
وجود دارد.