Linux
文章平均质量分 67
白杨谷
努力向底层钻研的小学渣
展开
-
Intel CPU Power Management
Linux中CPU频率那点事原创 2022-05-09 19:03:28 · 4393 阅读 · 0 评论 -
Linux性能参数相关命令
先借个图, 针对Linux的性能相关命令真是多如牛毛了,在这里介绍其中几个。top 最简单也是最常用的查看系统当前负载情况,如下图所示:可以看到过去1,5,15分钟的系统平均负载(也可使用uptime)。任务数量,CPU资源分布。对于memory:total = free + used + buffer/cache。vmstat r:处在 runnable 状态的任务,包括正在运行的任务和等待运行的任务。 us,sy,id,wa,st:CPU 时间的各项指标(对所有 CPU 取均.转载 2021-09-08 16:04:55 · 89 阅读 · 0 评论 -
Linux - 时钟
本文是《Linux内核设计与实现》中“定时器与时间管理”的学习笔记。节拍率Hz系统定时器频率是通过静态预处理定义的。我的Ubuntu配置的是250Hz(4ms一个周期)。root@john-virtual-machine:/boot# grep CONFIG_HZ config-4.15.0-154-generic# CONFIG_HZ_PERIODIC is not set# CONFIG_HZ_100 is not setCONFIG_HZ_250=y# CONFIG_HZ_300转载 2021-08-24 09:55:09 · 1023 阅读 · 0 评论 -
Linux kernel thread
当我们在Linux系统中执行ps or top命令时,会发现有些进程的command 加有[],有些则没有。这是因为什么呢?[] 表示为内核线程,其余则为用户态进程。Pid=1/lib/systemd/systemd 是所有用户态进程的父进程。以前是initPid=2 kthreadd 是所有内核态线程的父线程。USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1.原创 2021-08-20 19:54:29 · 170 阅读 · 0 评论 -
Linux内核同步
临界区:访问和操作共享数据的代码段原创 2021-08-14 16:25:47 · 70 阅读 · 0 评论 -
Linux中断
本文学习《Linux内核设计与实现》的笔记让硬件在需要的时候向内核发出信号,这就是中断机制,而不是采用polling的方式,浪费过多的资源。由硬件产生的中断为异步中断,处理器自身产生的中断为同步中断。中断处理程序对于特定中断,内核会执行相应的函数(中断处理程序ISR),中断处理程序是硬件驱动设备的一部分。再次说明,中断处理程序不和特定的设备关联,而是中断,有些设备能会产生多个中断。注册中断处理程序驱动程序通过request_irq()函数注册一个中断处理函数,并且激活(分配)给定的中断线原创 2021-08-10 10:59:38 · 355 阅读 · 0 评论 -
Scheduler
Linux中的调度器可以分为主调度器和周期调度器RQstruct rq 定义在kernel/sched/sched.h在SMP系统中,每个CPU对应一个rq,每个rq包含三个就绪队列:cfs_rq/rt_rq/dl_rqunsigned int nr_running 可运行的进程总数raw_spinlock_t lock; runqueue clock所有rq结构体存放在runqueues数组中,周期调度器周期性调度器并不负责进程的切换,而是负责更新进...转载 2021-08-06 10:23:39 · 181 阅读 · 0 评论 -
Linux内核栈
概念kernel version: 5.13每个进程在创建时分配了两个栈,一个是用户栈,一个是内核栈。当进程通过系统调用、中断、异常等方式陷入内核时,就不能在使用用户栈,而是使用内核栈。Linux kernel定义了一个共用体:union thread_union {#ifndef CONFIG_ARCH_TASK_STRUCT_ON_STACK struct task_struct task;#endif#ifndef CONFIG_THREAD_INFO_IN_TASK st转载 2021-08-05 10:15:28 · 2205 阅读 · 0 评论 -
进程描述符
进程描述符(task_struct)包含了内核管理进程所需的全部信息,在kernel2.6之前,task_struct在创建进程时保存在内核栈的尾部,在kernel2.6之后,由slab分配器分配task_struct结构(通过预先分配和重复使用task_struct,可以避免动态分配和释放所带来的资源消耗),此时在内核栈thread_info结构有一个指向进程描述符的指针:current_thread_info() -> task下图摘自《Linux内核设计与实现》...原创 2021-08-01 22:54:51 · 912 阅读 · 0 评论