相关内容

Linux内核同步机制之(二):Per-CPU变量
这里可以顺便提一下per-cpu变量的软件层次:(1)arch-independent interface。 在includelinuxpercpu.h文件中,定义了内核其他模块要使用per cpu机制使用的接口api以及相关数据结构的定义。 内核其他模块需要使用per cpu变量接口的时候需要include该头文件(2)arch-generalinterface。 在includeasm-genericpercpu...
一张图看懂linux内核中percpu变量的实现
但你知道吗,不仅是在编程语言中,在linux内核中,也有一个类似的机制,用来实现类似的目的,它叫做percpu变量。 percpu变量,顾名思义,就是对于同一个变量,每个cpu都有自己的一份,它可以被用来存放一些cpu独有的数据,比如cpu的id,cpu上正在运行的线程等等,因该机制可以非常方便的解决一些特定问题,所以在内核...
Linux 内核参数
10 }11 }对于tcp的初始接收窗口大小,linux和centos的实现是不一样的,如linux内核3.10版本的初始接收窗口定义为10mss,但centos 3.10内核中的初始窗口...return init_rwnd; * tcp initial congestion window as per draft-hkchu-tcpm-initcwnd-01 ** tcpinitial congestion window as per draft-hkchu-tcpm...
Linux内核高端内存
linux内核地址映射模型x86 cpu采用了段页式地址映射模型。 进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。 段页式机制如下图。? linux内核地址空间划分通常32位linux内核地址空间划分0~3g为用户空间,3~4g为内核空间。 注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。? ...
内核移植
步骤2:添加 tencentos tiny 内核代码tencentos tiny 的内核代码添加分为添加 arch平台代码、内核源码、 cmsis os 源码及 tos_config.h 头文件等步骤。 2.1 添加 arch 平台代码在 keil 工程中添加 tosarch 分组目录。 将 archarmarm-v7mcommon 目录下 tos_cpu.c 文件添加至 tosarch 目录下。 tos_cpu.c 是 tencentos ...

Linux内核Crash分析
每一个进程的生命周期内,其生命周期的范围为几毫秒到几个月。 一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。 这时使用的不再是用户空间的栈空间,使用对应的内核栈空间。 对每一个进程来说,linux内核都会把两个不同的数据结构紧凑的存放在一个单独为进程分配的存储空间中:一个是内核态的进程...
Linux内核那些事之连接跟踪
注:本文对应的linux源码为最新的5. 9. 1200—基础知识一个连接由两个tuple组成,分别代表两个方向的报文信息。 一个tuple一般由报文的五元组构成,分别是源地址、目的地址,源端口、目的端口和协议号(四层)。 连接跟踪表一般为hash表。 该表可能是全局的,也可能是per cpu的,linux内核选择的是全局表。 每个连接...

Linux内核源码分析方法
linux内核源码分析方法一、内核源码之我见linux内核代码的庞大令不少人“望而生畏”也正因为如此,使得人们对linux的了解仅处于泛泛的层次。 如果想透析linux,深入操作系统的本质,阅读内核源码是最有效的途径。 我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写。 编程固然重要,但是往往只编程的人很...
制作 Linux 镜像
如返回结果为空,则请检查内核编译选项 config_blk_dev_nbd 是否打开。 如未开启,则需更换系统或打开 config_blk_dev_nbd 编译选项后重编内核...net_prio)cgroup on sysfscgroupperf_event type cgroup(rw,nosuid,nodev,noexec,relatime,perf_event)systemd-1 on homelibinwork_doc type autofs...

Linux 内核 VS 内存碎片 (上)
(外部)内存碎片是一个历史悠久的 linux 内核编程问题,随着系统的运行,页面被分配给各种任务,随着时间的推移内存会逐步碎片化,最终正常运行时间较长...per-cpu pageset 是用来优化单页分配的,可以减少处理器之间的锁竞争。 和反碎片化没有关系,因此在本文不做详细介绍。 根据迁移类型进行分组是我们要详细...

详解Linux内核内存管理架构
内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高的要求。 本文从内存管理硬件架构、地址空间划分和内存管理软件架构三个方面入手,尝试对内存管理的软硬件架构...
Linux内核的冷热缓存
如果这个页本来没有存在于硬件缓存中,那么它的到来,势必会将原本为其他的页缓存的内容挤出硬件缓存。 但是,如果对于内存的访问是由dma设备发起的,那么该页不会被cpu访问,就不需要在cpu的硬件缓存中进行缓存,也不会对已经缓存在硬件缓存中的页内容造成伤害。 在linux操作系统中,每个内存区域(zone)都分配了hot ...

浅谈 Linux 内核无线子系统
浅谈 linux 内核无线子系统 linux 内核是如何实现无线网络接口呢? 数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高层次的问题。 跟踪探索了一段时间的源代码后,我写下了这篇总结,希望在 linux 无线网络的...
linux内核的冷热页分配器
先说说cpu的cache,和cpu的cache比起来访问主内存是非常慢的,为了加快速度根据本地性原则,cpu在访问主内存的时候会把附近的一块数据都加载到cpu的cache里,之后读写这块数据都是在cache里做的。 linux本来有伙伴系统分配内存页,为了加快单个内存页的分配linux在每个node里为每个cpu分配了一个per_cpu_pageset...
Linux阅码场 - Linux内核月报(2020年06月)
无论是pacing还是gso,均可以有效提高包括quic在内的协议处理性能以及端到端性能,在以往,这两个特性是无法共存的,甚至是矛盾的,该patch的意义在于将两者结合了起来。 5.6 ptq: per thread queues该patch涉及linux内核网卡多队列技术的增强。 此前的网卡队列只能和cpu进行对应,该patch允许具体的thread直接和网卡...

Linux CPU监控
表2 cpu概览标记缩写含义user%us代表用户态 cpu 时间。 注意,它不包括下面的 nice 时间,但包括了 guest 时间。 system%sy代表内核态 cpu 时间...grep softirq、watch、sar -n dev 1、grep config_hz=bootconfig-$(uname -r)、vmstat、pidstat、perf top、perf record、execsnoop、psaux|sort -rnk +3...
Linux内核的进程负载均衡机制
如果目标cpu和进程a之前所在cpu正好是同一个numa但是不同物理cpu上(多numa结构),虽然cache已经是冷了,但至少内存访问还是在本numa中。 如果目标cpu和进程a之前所在cpu在不同numa中,不但cache是冷的,跨numa内存还有惩罚,此时内存访问速度最差。 smp组织 为了更好地利用cache,内核将cpu(如果开启了超线程,那么以...
Linux内核编译及CentOS系统安装
2、linux内核编译准备(1)前提 1)准备好开发环境; 2)获取目标主机上硬件设备的相关信息; 3)获取到目标主机系统功能的相关信息,例如要启用的文件...修改selinux参数的值为下面其中之一:permissive或disabled; selinux立即生效:# getenforce # setenforce 0 9)定制kickstart文件 # yum install...
Linux阅码场 - Linux内核月报(2020年07月)
关于linux内核月报linux阅码场linux阅码场内核月报栏目,是汇总当月linux内核社区最重要的一线开发动态,方便读者们更容易跟踪linux内核的最前沿发展动向。 限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅码场社区添砖加瓦。 本期月报(总第2期)主要贡献人员...
linux内核崩溃问题排查过程总结
概述 某年某月某日某项目的线上分布式文件系统服务器多台linux系统kernel崩溃,严重影响了某项目对外提供服务的能力,在公司造成了不小影响。 通过排查线上问题基本确定了是由于linux内核panic造成的原因,通过两个阶段的问题排查,基本上确定了linux内核panic的原因。 排查问题的主要手段就是网上查找资料和根据内核...