
Linux
文章平均质量分 94
yayong
系统程序员
展开
-
Linux内核调试工具: Crash - 1
去年写的关于Linux内核crash debug工具的文章。这篇文章对用crash调式Linux内核,或者加入到crash社区都有参考意义。原创 2016-01-26 21:58:58 · 1481 阅读 · 0 评论 -
使用kdb和kgdb调试Linux内核(3)
Linux内核可以远程用gdb调试。但调试内核某块还是有些特殊的问题要处理。本文主要介绍如何利用gdb kgdb 去调试Linux内核模块。原创 2016-05-13 09:05:28 · 4049 阅读 · 0 评论 -
Linux内核抢占机制 - 实现
本文主要围绕 Linux 内核调度器 Preemption 的相关实现进行讨论。其中涉及的一般操作系统和 x86 处理器和硬件概念,可能也适用于其它操作系统。原创 2016-05-02 19:19:32 · 8904 阅读 · 1 评论 -
Hyper-V 虚拟设备简介
本文主要介绍了 Hyper-V 的虚拟化设备的分类和基本概念。对 LINUX 的 Hyper-V 全虚拟化和半虚拟化驱动做了简单介绍。这些概念和其它虚拟化技术里的概念非常相似。原创 2016-05-04 07:54:44 · 4368 阅读 · 0 评论 -
Linux内核抢占机制 - 简介
本文主要围绕 Linux 内核调度器 Preemption 的相关实现进行讨论。其中涉及的一般操作系统和 x86 处理器和硬件概念,可能也适用于其它操作系统。本文涉及了上下文切换,内核里各种 Preemption机制。原创 2016-04-19 21:12:47 · 9879 阅读 · 0 评论 -
Linux文件系统基础(5)
本文继续 Samplefs 的源码介绍。Day3 的源码主要是在状态和调试方面的改进。2. 代码与 Day1 和 Day2 的代码相比,Day3 的实现非常简单。原创 2016-07-10 20:10:47 · 1752 阅读 · 0 评论 -
Linux 块设备驱动 (1)
Sampleblk 是一个用于学习目的的 Linux 块设备驱动项目。其中 day1 的源代码实现了一个最简的块设备驱动,源代码只有 200 多行。本文主要围绕这些源代码,讨论 Linux 块设备驱动开发的基本知识。原创 2016-06-04 18:16:12 · 11408 阅读 · 1 评论 -
Linux 块设备驱动 (2)
本文将继续上篇博客:Linux 块设备驱动 (1) 的实验,围绕 Sampleblk 探究 Linux 块设备驱动的运作机制。除非特别指明,本文中所有 Linux 内核源码引用都基于 4.6.0。其它内核版本可能会有较大差异。原创 2016-10-23 21:45:16 · 2079 阅读 · 0 评论 -
Linux 块设备驱动 (3)
本文将继续之前系列文章中的实验,围绕这个简单的 fio 测试,探究 Linux 块设备驱动和文件 IO 的运作机制。除非特别指明,本文中所有 Linux 内核源码引用都基于 4.6.0。其它内核版本可能会有较大差异。原创 2016-11-12 16:26:48 · 2930 阅读 · 0 评论 -
Linux文件系统基础(4)
本文将在 Sampleblk 块设备上创建 Ext4 文件系统,以 Ext4 文件系统为例,用 debugfs 和 crash 来查看 Ext4 文件系统的磁盘格式 (File System Disk Layout)。您将了解到 Ext3 和 Ext4 在磁盘格式上的区别,并了解如何使用工具遍历Ext4的磁盘格式。原创 2016-06-12 22:48:09 · 7696 阅读 · 0 评论 -
Linux 块设备驱动 (4)
1. 背景让我们梳理一下本系列文章整体脉络。首先,Linux Block Driver - 1 介绍了一个只有 200 行源码的 Sampleblk 块驱动的实现。然后,在 Linux Block Driver - 2 中,我们在 Sampleblk 驱动创建了 Ext4 文件系统,并做了一个 fio 顺序写测试。测试中我们利用 Linux 的各种跟踪工具,对这个 fio 测试做了一个...原创 2018-03-04 16:18:41 · 1406 阅读 · 0 评论 -
Linux 块设备驱动 (5)
1. 背景本系列文章整体脉络回顾,Linux Block Driver - 1 介绍了一个只有 200 行源码的 Sampleblk 块驱动的实现。Linux Block Driver - 2 中,在 Sampleblk 驱动创建了 Ext4 文件系统,并做了一个 fio 顺序写测试。测试中我们利用 Linux 的各种跟踪工具,对这个 fio 测试做了一个性能个性化分析。Linux ...原创 2018-03-04 16:21:48 · 2266 阅读 · 0 评论 -
使用kdb和kgdb调试Linux内核(2)
Linux内核崩溃时,如果保存core文件失败,或者发生在系统启动早期,kdb/kgdb可能是一个解决问题的利器。过去网上很多文章介绍利用串口kgdb调试内核,这要求运行gdb的机器和被调试的机器通过串口相连。但实际上用户或者云的开发环境中,串口是通过console server连接的,这里面会遇到gdb的debug协议在console server上的兼容性问题。本文给出了解决办法。原创 2016-02-05 09:36:34 · 2108 阅读 · 0 评论 -
使用kdb和kgdb调试Linux内核(1)
使用kdb和kgdb调试linux内核在内核模块开发早期是非常方便的手段。尤其kgdb是源码级内核调试器,是学习Linux内核的有力工具。原创 2016-02-04 09:34:08 · 2375 阅读 · 0 评论 -
网络系统调用延迟
10G以太网2ms延迟究竟是不是问题?虽然是微秒级的高速网络,但是还是有可能存在2ms延迟的。利用内核跟踪工具可以轻松定位内核中的延迟问题。原创 2016-02-03 09:45:10 · 1178 阅读 · 0 评论 -
Linux内核调试工具: Crash - 调试page cache的新工具
介绍如何使用本人贡献的crash里新的命令去调试page cache相关的文件系统问题。原创 2016-01-28 20:00:57 · 1326 阅读 · 0 评论 -
x86 TSC使用的那些坑
用x86 TSC寄存器的时间戳来计算程序的运行时间用于性能分析是常见的性能分析代码的植入技巧。但这里面到处都是坑。连Linux内核都未幸免,TSC的各种bug层出不穷。再加上各种虚拟化,热迁移导致TSC的问题。所以,TSC的使用真的不简单。很抱歉本文用英文写成,文章很长。但这篇文章恐怕也是互联网上讨论TSC问题最全面详细的文章了。原创 2016-02-06 09:25:24 · 9215 阅读 · 0 评论 -
Docker的使用场景总结
本文首发于http://oliveryang.net,转载时请包含原文或者作者网站链接。Docker无疑是近两年来最火热的技术话题之一。而且落地速度之快也是大大出乎很多人的意料之外。而在10年前就接触过Solaris Container技术的我,看到这种现象也不免疑惑:为什么container在10年后借助Docker火起来了?Docker在古老的container技术基础上做了什么什么创新?于是原创 2016-02-07 12:50:51 · 1827 阅读 · 1 评论 -
Linux文件系统基础(1)
Linux文件系统基本概念和分类。关键字:集群文件系统,分布式文件系统,本地文件系统,特殊目的文件系统,Linux内核,文件系统架构。原创 2016-02-09 10:03:10 · 2176 阅读 · 0 评论 -
VMware存储栈那点儿事儿
VMware存储栈基本概念介绍。关键字:虚拟化,虚拟机,LUN, Volume, VMFS,Datastore, 虚拟机文件,虚拟磁盘,PVSCSI,vSAN。原创 2016-02-10 10:56:55 · 6796 阅读 · 1 评论 -
Linux NUMA优化(1)
本文介绍x86 NUMA的基本知识,包括简单的NUMA系统架构知识和ACPI规范中提供给OS的相关接口。原创 2016-02-12 12:43:38 · 5951 阅读 · 0 评论 -
Linux内核调试工具: Crash - 编码要求
Linux内核的crash调试工具主要用于内核core dump之后的事后分析。前几篇博客涉及到了crash的一些使用。本篇文章主要介绍如何给crash的社区提交patch,社区的编码要求和测试环境的搭建。原创 2016-01-31 00:15:09 · 784 阅读 · 0 评论 -
Linux调度器性能分析 - 1
应用程序出现了CPU占用率问题,尤其是低cpu占用率问题,通常可以从调度器的性能分析计数器找到一些方向。既要让CPU资源使用更有效率,又要让进程面对各种事件时有良好的响应延迟,调度器需要做出一些tradeoff。原创 2016-01-31 09:59:30 · 935 阅读 · 0 评论 -
Linux调度器性能分析 - 2
Linux内核调度器提供了强大而又详尽的调度器性能计数器:SCHEDSTATS。本文对这一性能技术器做简单的介绍。原创 2016-02-01 09:47:15 · 2009 阅读 · 0 评论 -
Linux文件系统基础(3)
Samplefs day2 的代码涉及到了文件系统 mount 和 Super Block (超级块)的实现。本文将以 day2 的代码为例,讲解相关概念。简单文件系统(samplefs)是Steve French写的用于教学目的的文件系统。它的设计初衷是帮助初学者理解如何实现一个文件系统,并且在Linux环境下对文件系统如何debug和tunning。原创 2016-03-02 18:48:31 · 3410 阅读 · 1 评论 -
Linux文件系统基础(2)
本文通过对samplefs day1的源码和实验,介绍了实现Linux文件系统模块的一些基本概念。简单文件系统(samplefs)是Steve French写的用于教学目的的文件系统。它的设计初衷是帮助初学者理解如何实现一个文件系统,并且在Linux环境下对文件系统如何debug和tunning。原创 2016-03-01 19:58:19 · 3031 阅读 · 0 评论 -
Linux 块设备驱动 (6)
1. 背景本系列文章整体脉络回顾,Linux Block Driver - 1 介绍了一个只有 200 行源码的 Sampleblk 块驱动的实现。Linux Block Driver - 2 中,在 Sampleblk 驱动创建了 Ext4 文件系统,并做了一个 fio 顺序写测试。测试中我们利用 Linux 的各种跟踪工具,对这个 fio 测试做了一个性能个性化分析。Linux ...原创 2018-03-04 16:24:41 · 1575 阅读 · 0 评论