在调试linux过程中,其实在linux用户态有很多方法可以查看linux内核的相关信息,这里记录一下,持续更新
一、内核cpu相关
1、查看linux中的cpu是否上线
/sys/devices/system/cpu/offline
lscpu | grep -i "off"
2、查看cpu频率
cat /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq
3、隔离cpu的方法-isolcpus
在x86以及arm中,isolcpus的方法可以将我们想要的cpu单独隔离处理。
3-1、在x86中,具体为修改/boot/grubs/grub.cfg中的配置。
比如现在要隔离cpu2,那就是在/boot/grubs/grub.cfg文件中修改isolcpus=2
3-2、在arm中,具体为修改uboot中cmd的配置
在arm中是不会有/boot/grubs/grub.cfg这个文件的,但是一般linux内核都支持isolcpus对应的驱动。
比如现在要隔离cpu2,uboot的cmd中可以添加“isolcpus=2 nohz_full=2”。
4、隔离cpu的方法-taskset
taskset与isolcpus不同,isolcpus可以隔离cpu在内核中的调度,taskset不能。
taskset只能隔离cpu在应用层方面的调度,具体为进程方面的调度。
二、内核配置相关
1、查看linux内核config
将/proc/config.gz拷贝出来,然后解压,就是编译linux内核时候的config文件
2、查看linux内存分配
cat /proc/iomem
3、查看gpio相关
(4-1)查看当前应用层IO口调用:
cat /sys/kernel/debug/gpio
(4-2)设置51引脚IO给应用层使用:
echo 51 > /sys/class/gpio/export
(4-3)设置51引脚IO为输出状态:
echo "out" > /sys/class/gpio/gpio51/direction
(4-4)设置51引脚IO输出状态为1,这里可设置1和0:
echo 1 > /sys/class/gpio/gpio51/value
4、查看uboot引导kenrel cmd配置
cat /proc/cmdline
5、查看一些系统信息指令
cat /etc/os-release
6、查看设备树中的相关描述定义
查看设备树的描述定义,同时linux fdt可以通过/proc/devices-tree/model看看是否被覆盖。
如果被覆盖的话,model里面的内容会异常
cat /proc/device-tree/model
其实在 /proc/device-tree/中,有很多设备树中相关定义,可以进入到更深层的目录,通过cat可查看name还有uevent文件,查看当前是外设驱动配置以及是否开启。
三、内核中断相关
1、查看linux系统中断分布
cat /proc/interrupts
2、查看linux系统中断次数
以下指令可以看到linux中断次数,包括到各个cpu中的统计
cat /proc/softirqs
3、x86中隔离cpu中断
irqbalance是x86 linux用来做中断负载均衡的一种手段。
在x86中,如果要单独隔离一个cpu,需要让irqbalance中的中断均衡策略不要影响到我们想隔离的cpu,那就需要修改/etc/sysconfig/irqbalance文件中IRQBALANCE_BANNED_CPUS的值。
比如要隔离cpu2,那需要配置为04。这里的04实际上表达的十六进制的0x04,转为二进制就是0b00000100,表示从下标为0开始的cpu2。
IRQBALANCE_BANNED_CPUS=“04”