这样才能玩转Linux内核之CPU篇
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及
Linux内核这样学才能学会(内存篇)
哈喽,我是子牙,一个很卷的硬核男人深入研究计算机底层、Windows内核、Linux内核、Hotspot源码……聚焦做那些大家想学没地方学的课程。为了保证课程质量及教学效果,一年磨一剑,三年先后做了三个课程:手写JVM、手写OS及带你用纯汇编写OS、手写64位多核OS及
【全网首发】一步一图带你构建 Linux 页表体系—详解虚拟内存如何与物理内存进行映射
笔者这次想让虚拟内存和物理内存两者一起动态联动起来,在这个联动的过程中将之前的这些静态知识点统统串联起来,形成一条内存管理的主线
Linux上文件监控的踩坑分享
在高磁盘IO的主机上、不同版本的内核上以及海量监控目标中,将会面临哪些问题呢?业务性能与安全性如何做更好地取舍均衡?
【全网首发】深度解析 slab 内存池回收内存以及销毁全流程
笔者详细地为大家介绍了 slab cache 进行内存分配的整个链路实现,本文我们就来到了 slab cache 最后的一部分内容了,当申请的内存使用完毕之后,下面就该释放内存了。
【全网首发】深入理解 slab cache 内存分配全链路实现
最后我们介绍了 slab 所在内存页的详细初始化流程,其中包括了对  slab freelist 链表的初始化,以及 slab 对象的初始化~
多图详解Linux内存分配器slub
slub的数据结构相对于slab来说要简单很多。并且对外接口和slab兼容。所以说,从slab的系统更换到slub,可以说是易如反掌。
【全网首发】从内核源码看 slab 内存池的创建初始化流程
slab cache 机制确实比较复杂,涉及到的场景又很多,大家读到这里,我想肯定会好奇或者怀疑笔者在上篇文章中所论述的那些原理的正确性,毕竟 talk is cheap ,所以为了让大家看着安心,理解起来放心,从本文开始,我们将正式进入 show you the code 的阶段
BPF内核实现详解
BPF的字面上意思Berkeley Packet Filter意味着它是从包过滤而来。如果在开始前对BPF缺乏感性的认识建议先看一下参考文档:“3.1、Berkeley Packet Filter (BPF) (Kernel Document)”、“3.2、BPF and XDP Reference
BCC小白写测试上下文切换延时程序
学习兴趣起源于论文《Linux上下文切换性能测试的一种新方法》的阅读,该论文提出了一种在用户态编写应用程序并且调用schedu_yield()系统调用主动放弃处理器实现任务切换的测试方法,然后与传统的使用管道读写切换、在内核态测试context_switch()函数的开销等方法进行了对比分析
【全网首发】深度剖析 Linux 伙伴系统的设计与实现
本文笔者就为大家完整地介绍一下伙伴系统这部分的内容,我们将基于内核 5.4 版本的源码来详细的讨论一下伙伴系统在内核中的设计与实现
内存管理学习笔记
物理内存分配设计有两个重要的评价维度。一方面,物理内存分配器要追求更高的内存资源利用率,即尽可能减少资源浪费。另一方面,物理内存分配器要追求更好的性能,主要是尽可能降低分配延迟和节约CPU资源。
【全网首发】你的新进程是如何被内核调度执行到的?
大家好,我是飞哥!在前面的文章《Linux进程是如何创建出来的?》 和 《聊聊Linux中线程和进程的联系与区别》 中我们都讲过了,进程和线程在创建出来后会加入运行队列里面等待被调度。但咱们之前提的太笼统了。所谓的运行队列到底长什么样子、新进程是如何被加入进来的、调度是如何选择一个新进程的、新进
给32位系统装8g内存条能用吗?为什么?
关于32位和64位,这个概念一直让人比较懵。在买电脑的时候,我们看到过32位和64位CPU。下软件的时候,我们也看到过32位或64位的软件。就连装虚拟机的时候,我们也看过32位和64位的系统。在写代码的时候,我们的数值,也可以定义为int32或者int64。我们当然很清楚,装软件的时候,
嵌入式linux-CPU性能优化小记
嵌入式业务应用运行导致系统sys CPU使用率飚高,本文记录本次性能分析定位过程,包括一些常用工具使用示例等
白话硬核技术系列开篇:这么多技术我们该怎么学
希望我们每一个人都能够更加高效地学习新技术,节省下来的时间多陪陪家人和朋友
Linux 内核源码分析之进程概要及调度时机
这篇文章从 Linux 内核层面分享进程概要及调度时机。
精致全景图 | linux内核输出的日志去哪里了
熟悉linux内核,或者看过linux内核源码的同学就会知道,在内核中,有一个类似于c语言的输出函数,叫做printk,使用它,我们可以打印各种我们想要的信息,比如内核当前的运行状态,又或者是我们自己的调试日志等,非常方便。
深入理解Linux内核进程上下文切换
我们都知道操作系统的一个重要功能就是进行进程管理,而进程管理就是在合适的时机选择合适的进程来执行,在单个cpu运行队列上各个进程宏观并行微观串行执行,多个cpu运行队列上的各个进程之间完全的并行执行。
Linux进程调度技术的前世今生之“今生”
2、O(1)调度器的软件功能划分下图是一个O(1)调度器的软件框架:O(n)调度器中只有一个全局的runqueue,严重影响了扩展性,因此在O(1)调度器中引入了per-CPU runqueue的概念
Linux进程调度技术的前世今生之“前世”
一、前言随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭。我有一个循序渐进的方法,那就是先不
一张图看懂linux内核中percpu变量的实现
我们在使用各种编程语言进行多线程编程时,经常会用到thread local变量。所谓thread local变量,就是对于同一个变量,每个线程都有自己的一份,对该变量的访问是线程隔离的,它们之间不会相
为什么我的进程被kill掉了
先来看段代码:这段代码非常简单,就是先用mmap的方式,为该进程分配10GiB的虚拟内存,然后再用page写的方式,让操作系统为这10GiB虚拟内存,分配对应的物理内存,最后sleep,等待我们测试。
NODE_EXPORTER+PROMETHEUS+GRAFANA 快速实现LINUX系统性能数据提取、存储和可视化展示
1. 前言本文将通过Node_exporter+Prometheus+Grafana三者结合,快速提取Linux内核数据,数据包括但不限于CPU、内存、磁盘、网络IO等,并进行可视化展示。当然,这一套
Linux内核中用GFP_ATOMIC申请内存究竟意味着什么?
GFP_ATOMIC vs. GFP_KERNEL我们都知道,在中断、软中断、spinlock等原子上下文里面,申请内存,应该使用GFP_ATOMIC标记,譬如内核中有大量的kmalloc/GFP_A

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

本专题精选了HeapDump性能社区中的8篇数据库性能优化相关文章,这些文章内不仅包含了影响数据库性能的因素,数据库性能评估标准、优化方法的内容,还介绍了一些数据库设计原则和编程技巧,并且记录了一些或大或小的实战案例,帮助大家快速了解数据库性能优化,掌握一些实操技能。
8篇文章14789阅读量
相比于后端遇到的各种复杂性能问题,前端的性能相对简单,但是简单不代表容易,前端的技术更新迭代快,那么针对性能问题自然也会出现各种变种,需要各种新的工具和思路。
HeapDump性能社区将引进更多前端相关大佬,来给大家分享前端性能的那些事儿。本期先从前端性能基础开始:
5篇文章7197阅读量