Blogs

eBPF内核探测中将任意系统调用转换成事件

由 梁金荣 | 1900字 | 阅读大约需要4分钟 | 归档于eBPF

2020年6月7日

Linux 4.4 以上内核基于 eBPF 可以将任何内核函数调用转换成可带任何数据的用户空间事件。程序采集系统相关参数时,通常有两种方式。一种是程序主动去轮询,检查系统变化,即 poll 模型;另一种是系统主动通知程序,即 push 模型。使用 poll 模型还是 push 模型取决于具体的问题。通常情况下,如果事件频率相对于事件处理时间来说比较低,那 push 模型比较合适;如果事件频率很高,就采用 pull 模型。例如,通常的网络驱动会等待网卡事件,而 dpdk 这样的框架会主动 poll 网卡, 以获得最高的吞吐性能和最低的延迟。理想情况下,我们需要一个通用的方式处理事件,具体做法请看此篇。

继续阅读

Linux内存管理

由 梁金荣整理 | 11300字 | 阅读大约需要23分钟 | 归档于电子杂志

2020年6月7日

本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。

继续阅读

双刃剑

由 王聪 | 7300字 | 阅读大约需要15分钟 | 归档于新手上路

2020年6月7日

Jim Gettys,X Window系统的最初作者之一,递交的一篇非常有深度的社论,涉及X Window系统和它可能的将来。

继续阅读

CFS 调度器

由 马明慧 | 5500字 | 阅读大约需要11分钟 | 归档于进程管理

2020年6月6日

调度器是OS的核心部分,说白了就是CPU时间的管理员。调度器主要是负责某些就绪的进程来执行,不同的调度器根据不同的方法挑选出最适合运行的进程。通过查阅资料,目前Linux支持的调度器有RT scheduler、Deadline scheduler、CFS scheduler及Idle scheduler等。

继续阅读

内核中的调度与同步

由 马明慧整理 | 8600字 | 阅读大约需要18分钟 | 归档于电子杂志

2020年6月6日

本章将为大家介绍内核中存在的各种任务调度机理以及它们之间的逻辑关系(这里将覆盖进程调度、推后执行、中断等概念),在此基础上向大家解释内核中需要同步保护的根本原因和保护方法。最后提供一个内核共享链表同步访问的例子,帮助大家理解内核编程中的同步问题。

继续阅读

中断下半部-工作队列

| 1700字 | 阅读大约需要4分钟 | 归档于中断机制

2020年6月6日

工作队列(work queue)是另外一种将中断的部分工作推后的一种方式,它可以实现一些tasklet不能实现的工作,比如工作队列机制可以睡眠。

继续阅读

编写自己的Shell解释器

由 戴君毅整理 | 7800字 | 阅读大约需要16分钟 | 归档于电子杂志

2020年6月5日

本期的目的是向大家介绍 shell 的概念和基本原理,并且在此基础上动手做一个简单 shell 解释器。同时,还将就用到的一些 linux 环境编程的知识做一定讲解。

继续阅读

eBPF学习——获取内核网络中的socket信息

由 梁金荣 | 1400字 | 阅读大约需要3分钟 | 归档于eBPF

2020年5月31日

本文将使用 bcc工具抓取内核网络中的数据,包括抓取 backlog 信息、port 和 IP 信息、网络命名空间信息等。bcc 是基于 LLVM 的工具集,用 Python 封装了底层机器相关的细节,bcc工具使得 eBPF 的使用更加方便,使用时内核探测代码用 C 写, 数据处理用 Python 。

继续阅读

eBPF学习——eBPF简介、安装和简单示例

由 梁金荣 | 2400字 | 阅读大约需要5分钟 | 归档于eBPF

2020年5月30日

本文将简单介绍eBPF,并分享安装过程和bcc程序实例。eBPF是将原先的BPF发展成一个指令集更复杂、应用范围更广的“内核虚拟机”。eBPF支持在用户态将C语言编写的一小段“内核代码”注入到内核中运行,注入时要先用llvm编译得到使用BPF指令集的elf文件,然后从elf文件中解析出可以注入内核的部分,最后用 bpf_load_program 方法完成注入。

继续阅读

中断处理的tasklet(小任务)机制

由 admin001 | 2400字 | 阅读大约需要5分钟 | 归档于LINUX内核试验

2020年5月23日

中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。下面介绍中断处理的tasklet机制

继续阅读