linux 内核
techtitan
这个作者很懒,什么都没留下…
展开
-
smmu梳理
参考引用见参考资料章节)访问非连续的地址现在系统中很少再预留连续的memory,如果Master需要很多memory,可以通过SMMU把一些非连续的PA映射到连续的VA,例如给DMA,VPU,DPU使用。32位转换成64位现在很多系统是64位的,但是有些Master还是32位的,只能访问低4GB空间,如果访问更大的地址空间需要软硬件参与交换memory,实现起来比较复杂,也可以通过SMMU来解决,Master发出来的32位的地址,通过SMMU转换成64位,就很容易访问高地址空间。...原创 2022-07-17 21:26:10 · 932 阅读 · 0 评论 -
linux kernel ptrace 流程梳理
ptrace 背景ptrace 是linux 中跟踪进程使用的一种方式手段,主要方法是使用stop 信号将目的进程stop掉, 然后使用gup.c中的get_user_page对目的进程的地址空间进行访问从代码角度讲,ptrace 是linux 的一个系统调用, 详细描述可以man ptrace查看代码流程ptrace 系统调用代码文件 kernel/ptrace.c主要代码流程:ptrace_attach: 1) ptrace_link将自己链接到parent 2) 将对方任务stop掉,原创 2021-11-07 21:54:35 · 411 阅读 · 0 评论 -
体系结构体
参考资料基于深入理解计算机系统进行的总结https://blog.csdn.net/jisuanji198509/article/details/80474613top_down的性能分析方法https://zhuanlan.zhihu.com/p/64529137原创 2021-07-18 15:59:29 · 66 阅读 · 0 评论 -
cfs调度的抢占
结论分析不能的policy之间是可以抢占的,比如sched_normal policy可以抢占sched_idle policy 的任务。 sched_batch 不抢占唤醒时的唤醒任务和被幻想任务,如果两个特性 next_buddy 以及 last_buddy被打开的话,是可以支持抢占的如果wakeup任务的vruntime时间小于curr的vruntime时间,差值大于sysctl_sched_wakeup_granularity, 则设置next_buddy (set_next_buddy)原创 2021-07-08 22:57:58 · 207 阅读 · 0 评论 -
linux cfs调度算法理解
cfs调度算法理解时间片计算方法整体理解:根据优先级权重分享调度周期的时间公式:sched_slice = (task_load / rq_load_total) * sched_latencysched_latency 在linux上面是有配置i的,当任务小于8个的时候,使用sched_latency , 如果大于8个的话, rq上面的任务个数*sched_granurity.ubuntu 上面的配置如下:调度周期 sched_latency,即调度队列中所有任务时间片执行一次的时间对应原创 2021-07-04 16:57:25 · 904 阅读 · 3 评论 -
cgroup cpu group 源码分析
cpu group pick_next函数以下代码来自 pick_next_task_fair···6739 /*6740 * Because of the set_next_buddy() in dequeue_task_fair() it is rather6741 * likely that a next task is from the same cgroup as the current.6742 *6743原创 2021-06-20 23:10:00 · 201 阅读 · 0 评论 -
cgroup_memcg
总结参考资料各个group参数配置说明,包含softlimit 讲解https://blog.csdn.net/pillarbuaa/article/details/79207036原创 2021-06-14 23:01:11 · 141 阅读 · 0 评论 -
namespace
原理简介task struct 成员 nsproxy系统内部函数有一个参数是namespace, 使用current->nxproxy传入进行设置namespace 创建fork 流程处理主要源文件:fs/namespace.c参考资料源码分析https://blog.csdn.net/WaltonWang/article/details/53900248源码和命名空间实验https://blog.csdn.net/zhonglinzhang/article/detail原创 2021-06-14 21:45:45 · 73 阅读 · 0 评论 -
性能调优整理
perf调度时延perf sched record sleep 5perf sched latency --sort maxperf 使用probe打桩打印调用栈(使用jprobe 实现,自己写jprobe也可以实现打印调用栈)perf probe -a enqueue_entityperf record -e probe:enqueue_entity -ag sleepperf report参考资料https://blog.csdn.net/yiyeguzhou100/article/原创 2021-05-09 21:46:47 · 191 阅读 · 0 评论 -
2021-04-13
内存回收参考资料内存回收https://www.cnblogs.com/LoyenWang/p/11827153.html原创 2021-04-17 20:05:44 · 49 阅读 · 0 评论 -
docker 容器
容器的基本原理容器技术是一种轻量级的虚拟化技术,通过使用cgroup+namespace+rootfs隔离(pirot_chroot)+ libcontainer, 虚拟分配计算资源,达到合理利用空闲资源的目的。各个容器是共用内核的,因此容器隔离性没有传统虚拟机隔离的彻底。比如,如果插入一个ko导致panic, 整个机器都会复位。容器= cgroup+namesapce+rootfs(文件系统隔离)+容器引擎(libcontainer, 负责容器的创建和生命周期管理)详细技术namespace原创 2021-04-05 12:01:37 · 116 阅读 · 0 评论 -
rtlinux
参考资料https://blog.csdn.net/rikeyone/article/details/94555165原创 2021-04-03 19:34:25 · 398 阅读 · 0 评论 -
linux 内存操作
用户态往物理内存写 devmem 0x3001222 32 0x077800004 读 devmem 0x*****原创 2015-10-03 15:45:21 · 326 阅读 · 0 评论 -
cgroup bug
cgroup_post_fork write_lock(&css_set_lock); ,将任务添加到链表中去,如A任务调用cpuset.cpus 进行模式切换时,cgroup_scan_tasks 里面可能没有A任务,这样A 任务可能就没有被添加到扫描链表cg_list 里面,所以A任务有可能不能进行正常核迁移。原创 2016-08-02 21:07:42 · 406 阅读 · 0 评论 -
fork vfork clone
fork>clone->do_fork vfork 除不拷贝父进程的页表项外,其他和fork 调用原创 2015-01-03 15:54:01 · 656 阅读 · 0 评论 -
linux中断学习
schedule_work schedule_delayed_work 将工作队列任务放到标准工作队列events中断数据结构:irq_desc 全局数据,每个中断占有一项 handle_edge_irq 调用 action_ret = handle_IRQ_event(irq, action); handle_IRQ_event原创 2014-09-14 14:46:16 · 647 阅读 · 0 评论 -
linux 调度
ps 优先级 和标准级别比较 【-40,99】top 【-99,40】调度类:实时进程:fifo rr 普通进程:cifs 内核抢占:高优先级实时进程抢占低优先级实时进程 高优先级实时进程抢占 普通优先级进程 普通进程之间没有抢占的概念原创 2014-03-19 21:52:01 · 667 阅读 · 0 评论 -
内存水线计算
linux内存管理中系统内存相关的参数说明(一) http://blog.chinaunix.net/uid-27177626-id-4197018.html原创 2016-03-13 11:03:34 · 3330 阅读 · 0 评论 -
推栈
栈帧详解http://blog.csdn.net/ylyuanlu/article/details/18947951原创 2015-11-09 23:21:05 · 852 阅读 · 0 评论 -
ftrace 跟踪函数调用
步骤:1. mount -t debugfs nodev /sys/kenrel/debug 2 .echo nop > /sys/kernel/debug/tracing/current_tracer 3. echo 'p:myprobe1 vfs_fsync_range' >> /sys/kernel/debug/tracing/kprobe_events //进入函数时执行原创 2015-10-03 16:28:49 · 1861 阅读 · 0 评论 -
linux 内核开发接口& 内核开发
内核接口:kallsysms_lookup 寻找内核符号地址,然后进行调用 MODULE_LICENSE("GPL"); 否则会提示先关符号找不到,如提示内核先关接口找不到。原创 2015-09-05 20:56:35 · 488 阅读 · 0 评论 -
connect 端口分配源码分析
__inet_hash_connectint __inet_hash_connect(struct inet_timewait_death_row *death_row,struct sock *sk, u32 port_offset,int (*check_established)(struct inet_timewait_death_row *,struct sock原创 2016-08-11 22:35:47 · 1111 阅读 · 0 评论 -
三次握手linux 源码分析
三次握手协议在linux内核中的实现http://blog.csdn.net/jccz_zys/article/details/1503252原创 2016-08-13 10:57:00 · 1402 阅读 · 0 评论 -
数据发送流程
http://blog.chinaunix.net/uid-24410388-id-3398491.htmlLinux发送函数dev_queue_xmit分析 --转原创 2016-08-13 11:26:00 · 513 阅读 · 0 评论 -
linux ksnapshot 方案
低狗线程因为死锁等导致没有喂狗时,chu原创 2014-09-15 22:21:25 · 667 阅读 · 0 评论 -
devmem 代码阅读,用户空间和内核空间同时访问同一内存
mmap 函数核心映射函数: remap_page_range remap_pfn_range原创 2017-09-04 20:29:50 · 471 阅读 · 0 评论 -
缓冲区满时send 阻塞分析
1. Send 缓冲区满时阻塞代码:Send底层调用函数tcp_sendmsg: tcp_sendmsg:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。new_segment:/* Allocate new segment. If the interface is SG, * allocate skb fitting to single pa原创 2016-10-16 22:01:18 · 3509 阅读 · 0 评论 -
协议栈 栈close 处理流程
msl 时间 2分钟 30s 60 1keeplive 2个小时发送一次包 超时重传:http://blog.csdn.net/isthefaithcounts/article/details/9879453超时重传时间:tcp_done:if (!sock_flag(sk, SOCK_DEAD))sk->sk_st原创 2016-10-16 18:50:35 · 463 阅读 · 0 评论 -
fork vfork clone
sys_vfork sys_clone sys_fork arch/arm/kernel/sys_arm.c asmlinkage int sys_vfork(struct pt_regs *regs){return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL);原创 2016-08-14 22:00:18 · 401 阅读 · 0 评论 -
linux 网络重组 分片 gso lro
MSS: Maxitu Segment Size 最大分段大小它是tcp数据包每次能够传输的最大数据分段.为了达到最佳的传输效能,tcp协议在建立连接的时候通常要协商双方的MSS值,这个值一般是减去ip头和tcp头原创 2016-08-14 16:18:23 · 1472 阅读 · 0 评论 -
linux 协议栈 定时器
linux内核tcp的定时器管理(一)http://blog.csdn.net/lmjjw/article/details/9992269原创 2016-07-13 22:21:22 · 428 阅读 · 0 评论 -
bind 源码分析
bind 源码分析 http://blog.chinaunix.net/uid-13746440-id-3076317.html原创 2016-08-14 11:26:44 · 1391 阅读 · 0 评论 -
linux listen 内核实现
linux listen 内核实现http://blog.chinaunix.net/uid-20788636-id-4437743.html原创 2016-08-14 10:37:32 · 475 阅读 · 0 评论 -
linux 调度优先级整理
待补充原创 2015-01-20 08:16:57 · 435 阅读 · 0 评论 -
linux kexec 喂狗 方案 汇编代码
设计实现方案:c 代码中通过 void 进行声明引用汇编读取c 代码中的符号.extern feed_wdt_pin adr r11, kexec_feed_wdt_pin rev r11,r11 转换大小端 . globl kexec _feed_wdt_pin kexec_feed_wdt_pin: .long 0x0原创 2015-10-03 15:59:04 · 764 阅读 · 0 评论 -
linux tss 断研究
待补充原创 2015-01-11 10:12:45 · 486 阅读 · 0 评论 -
linux 中断
以x86 为例,cs 和eip保存下一条将要执行的指令的逻辑地址,在执行那条指令前,控制单元会检查前一条指令是否已经发生了一个中断或异常。原创 2015-01-11 10:18:32 · 348 阅读 · 0 评论 -
linux 的压栈操作
中断处理压栈 参考 深入理解linux内核原创 2015-01-11 10:19:58 · 585 阅读 · 0 评论 -
技术人员的职场内功修复
1. 平时积累模板代码或脚本,碰到问题能够瞬间拿出来解决问题2. 人的记忆是有限的,学完一个东西,马上记下来并写成博客。 写博客的过程其实也是学习提高的过程,不要有写博客是浪费时间的想法。原创 2015-01-10 10:45:35 · 543 阅读 · 0 评论 -
slab着色
待补充原创 2015-01-11 11:23:54 · 372 阅读 · 0 评论