8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
借助Linux debugfs来检测内核栈使用状态及溢出检测
工具
Linux内核中有KASAN和kmemcheck
KASAN只支持arm64和x86,见内核文档Documentation/features/debug/KASAN/arch-support.txt
kmemcheck仅支持x86
因此在arm下使用debugfs来跟踪内核栈使用情况
内核配置debugfs支持
ftrace支持Kernel hacking ->
Tracers ->
[*] Trace max stack
使用# mount -t debugfs nodev /sys/kernel/debug
# echo 1 > /proc/sys/kernel/stack_tracer_enabled
检查以下状态# cat /sys/kernel/debug/tracing/stack_max_size
# cat /sys/kernel/debug/tracing/stack_trace
# cat /sys/kernel/debug/tracing/stack_max_size
7272
# cat /sys/kernel/debug/tracing/stack_trace
Depth Size Location (61 entries)
----- ---- --------
0) 7080 224 select_task_rq_fair+0x3be/0x980
1) 6856 112 try_to_wake_up+0x14a/0x400
2) 6744 16 wake_up_process+0x15/0x20
3) 6728 16 wakeup_softirqd+0x35/0x40
4) 6712 48 raise_softirq_irqoff+0x4f/0x90
5) 6664 48 __blk_complete_request+0x132/0x140
6) 6616 16 blk_complete_request+0x25/0x30
7) 6600 32 scsi_done+0x2f/0x60
8) 6568 48 megasas_queue_command+0xd1/0x140 [megaraid_sas]
9) 6520 48 scsi_dispatch_cmd+0x1ac/0x340
10) 6472 96 scsi_request_fn+0x415/0x590
11) 6376 32 __generic_unplug_device+0x32/0x40stack_max_size内核栈使用的峰值
stack_trace表示此峰值下的callstack和callstack中个个函数使用的栈的大小
Ref