自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 收藏
  • 关注

原创 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 1491

原创 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 2091

原创 Linux 块设备驱动 (4)

1. 背景让我们梳理一下本系列文章整体脉络。首先,Linux Block Driver - 1 介绍了一个只有 200 行源码的 Sampleblk 块驱动的实现。然后,在 Linux Block Driver - 2 中,我们在 Sampleblk 驱动创建了 Ext4 文件系统,并做了一个 fio 顺序写测试。测试中我们利用 Linux 的各种跟踪工具,对这个 fio 测试做了一个...

2018-03-04 16:18:41 1304

原创 Linux 块设备驱动 (3)

本文将继续之前系列文章中的实验,围绕这个简单的 fio 测试,探究 Linux 块设备驱动和文件 IO 的运作机制。除非特别指明,本文中所有 Linux 内核源码引用都基于 4.6.0。其它内核版本可能会有较大差异。

2016-11-12 16:26:48 2805

原创 Linux 块设备驱动 (2)

本文将继续上篇博客:Linux 块设备驱动 (1) 的实验,围绕 Sampleblk 探究 Linux 块设备驱动的运作机制。除非特别指明,本文中所有 Linux 内核源码引用都基于 4.6.0。其它内核版本可能会有较大差异。

2016-10-23 21:45:16 1995

原创 和自己谈判

2014 年 12 月 11 日这一天,第二次痛下决心减肥。五十多天后,成功减重 15 公斤,BMI 指数重回正常范围。终于可以彻底和伴随多年的“胖子”的称号彻底告别了。改变因何而发生?改变又因何而成功?记录一下我的思考......

2016-07-17 22:33:24 5397

原创 Linux文件系统基础(5)

本文继续 Samplefs 的源码介绍。Day3 的源码主要是在状态和调试方面的改进。2. 代码与 Day1 和 Day2 的代码相比,Day3 的实现非常简单。

2016-07-10 20:10:47 1693

原创 Linux文件系统基础(4)

本文将在 Sampleblk 块设备上创建 Ext4 文件系统,以 Ext4 文件系统为例,用 debugfs 和 crash 来查看 Ext4 文件系统的磁盘格式 (File System Disk Layout)。您将了解到 Ext3 和 Ext4 在磁盘格式上的区别,并了解如何使用工具遍历Ext4的磁盘格式。

2016-06-12 22:48:09 7541

原创 Linux 块设备驱动 (1)

Sampleblk 是一个用于学习目的的 Linux 块设备驱动项目。其中 day1 的源代码实现了一个最简的块设备驱动,源代码只有 200 多行。本文主要围绕这些源代码,讨论 Linux 块设备驱动开发的基本知识。

2016-06-04 18:16:12 11254 1

原创 使用kdb和kgdb调试Linux内核(3)

Linux内核可以远程用gdb调试。但调试内核某块还是有些特殊的问题要处理。本文主要介绍如何利用gdb kgdb 去调试Linux内核模块。

2016-05-13 09:05:28 3954

原创 Hyper-V 虚拟设备简介

本文主要介绍了 Hyper-V 的虚拟化设备的分类和基本概念。对 LINUX 的 Hyper-V 全虚拟化和半虚拟化驱动做了简单介绍。这些概念和其它虚拟化技术里的概念非常相似。

2016-05-04 07:54:44 4258

原创 Linux内核抢占机制 - 实现

本文主要围绕 Linux 内核调度器 Preemption 的相关实现进行讨论。其中涉及的一般操作系统和 x86 处理器和硬件概念,可能也适用于其它操作系统。

2016-05-02 19:19:32 8623 1

原创 Linux内核抢占机制 - 简介

本文主要围绕 Linux 内核调度器 Preemption 的相关实现进行讨论。其中涉及的一般操作系统和 x86 处理器和硬件概念,可能也适用于其它操作系统。本文涉及了上下文切换,内核里各种 Preemption机制。

2016-04-19 21:12:47 9740

原创 Linux文件系统基础(3)

Samplefs day2 的代码涉及到了文件系统 mount 和 Super Block (超级块)的实现。本文将以 day2 的代码为例,讲解相关概念。简单文件系统(samplefs)是Steve French写的用于教学目的的文件系统。它的设计初衷是帮助初学者理解如何实现一个文件系统,并且在Linux环境下对文件系统如何debug和tunning。

2016-03-02 18:48:31 3296 1

原创 Linux文件系统基础(2)

本文通过对samplefs day1的源码和实验,介绍了实现Linux文件系统模块的一些基本概念。简单文件系统(samplefs)是Steve French写的用于教学目的的文件系统。它的设计初衷是帮助初学者理解如何实现一个文件系统,并且在Linux环境下对文件系统如何debug和tunning。

2016-03-01 19:58:19 2936

原创 Linux NUMA优化(1)

本文介绍x86 NUMA的基本知识,包括简单的NUMA系统架构知识和ACPI规范中提供给OS的相关接口。

2016-02-12 12:43:38 5852

原创 数据保护的那点儿事儿(1)

本文首发于http://oliveryang.net,转载时请包含原文或者作者网站链接。数据保护的那点儿事儿数据保护就是保护数据使其免于数据损坏(Data Corruption)和数据丢失(Data Loss)的过程。常见的数据保护方式主要有以下两大类,备份(Backup)备份是指为了应对数据丢失(data loss)而将计算机数据进行拷贝和归档的过程。根据数据保存时间和目的,广义上的备份又可以

2016-02-11 10:37:10 3232

原创 VMware存储栈那点儿事儿

VMware存储栈基本概念介绍。关键字:虚拟化,虚拟机,LUN, Volume, VMFS,Datastore, 虚拟机文件,虚拟磁盘,PVSCSI,vSAN。

2016-02-10 10:56:55 6662 1

原创 Linux文件系统基础(1)

Linux文件系统基本概念和分类。关键字:集群文件系统,分布式文件系统,本地文件系统,特殊目的文件系统,Linux内核,文件系统架构。

2016-02-09 10:03:10 2135

原创 如何使自己的创见落地?

本文首发于http://oliveryang.net,转载时请包含原文或者作者网站链接。工程师的使命就是发现问题,定义问题,解决问题。根据要解决问题的复杂度,这个过程中,团队内部或者相关团队之间可能要做大量的沟通和讨论工作。通常来说,对一个idea品头论足很容易,但是要付诸行动,或者要求其它团队配合就很难了。很多时候Idea的提出者需要去考虑采取不同的沟通和讨论方式来逐步推进idea的落地。本文尝

2016-02-08 10:06:37 1819

原创 Docker的使用场景总结

本文首发于http://oliveryang.net,转载时请包含原文或者作者网站链接。Docker无疑是近两年来最火热的技术话题之一。而且落地速度之快也是大大出乎很多人的意料之外。而在10年前就接触过Solaris Container技术的我,看到这种现象也不免疑惑:为什么container在10年后借助Docker火起来了?Docker在古老的container技术基础上做了什么什么创新?于是

2016-02-07 12:50:51 1791 1

原创 x86 TSC使用的那些坑

用x86 TSC寄存器的时间戳来计算程序的运行时间用于性能分析是常见的性能分析代码的植入技巧。但这里面到处都是坑。连Linux内核都未幸免,TSC的各种bug层出不穷。再加上各种虚拟化,热迁移导致TSC的问题。所以,TSC的使用真的不简单。很抱歉本文用英文写成,文章很长。但这篇文章恐怕也是互联网上讨论TSC问题最全面详细的文章了。

2016-02-06 09:25:24 9033

原创 使用kdb和kgdb调试Linux内核(2)

Linux内核崩溃时,如果保存core文件失败,或者发生在系统启动早期,kdb/kgdb可能是一个解决问题的利器。过去网上很多文章介绍利用串口kgdb调试内核,这要求运行gdb的机器和被调试的机器通过串口相连。但实际上用户或者云的开发环境中,串口是通过console server连接的,这里面会遇到gdb的debug协议在console server上的兼容性问题。本文给出了解决办法。

2016-02-05 09:36:34 2069

原创 使用kdb和kgdb调试Linux内核(1)

使用kdb和kgdb调试linux内核在内核模块开发早期是非常方便的手段。尤其kgdb是源码级内核调试器,是学习Linux内核的有力工具。

2016-02-04 09:34:08 2308

原创 网络系统调用延迟

10G以太网2ms延迟究竟是不是问题?虽然是微秒级的高速网络,但是还是有可能存在2ms延迟的。利用内核跟踪工具可以轻松定位内核中的延迟问题。

2016-02-03 09:45:10 1137

原创 x86 SMI链路错误

什么是x86 SMI链路错误?SMI链路错误都有哪些可能性?

2016-02-02 09:41:49 1059

原创 Linux调度器性能分析 - 2

Linux内核调度器提供了强大而又详尽的调度器性能计数器:SCHEDSTATS。本文对这一性能技术器做简单的介绍。

2016-02-01 09:47:15 1871

原创 Linux调度器性能分析 - 1

应用程序出现了CPU占用率问题,尤其是低cpu占用率问题,通常可以从调度器的性能分析计数器找到一些方向。既要让CPU资源使用更有效率,又要让进程面对各种事件时有良好的响应延迟,调度器需要做出一些tradeoff。

2016-01-31 09:59:30 881

原创 Linux内核调试工具: Crash - 编码要求

Linux内核的crash调试工具主要用于内核core dump之后的事后分析。前几篇博客涉及到了crash的一些使用。本篇文章主要介绍如何给crash的社区提交patch,社区的编码要求和测试环境的搭建。

2016-01-31 00:15:09 749

原创 Linux内核调试工具: Crash - 调试page cache的新工具

介绍如何使用本人贡献的crash里新的命令去调试page cache相关的文件系统问题。

2016-01-28 20:00:57 1283

原创 Linux内核调试工具: Crash - 1

去年写的关于Linux内核crash debug工具的文章。这篇文章对用crash调式Linux内核,或者加入到crash社区都有参考意义。

2016-01-26 21:58:58 1428

原创 新的开始...

终于有了个人站点:http://oliveryang.net, 还有新的微信公众号。

2016-01-22 00:07:15 1124

原创 以太网卡杂记之MAC和PHY

网卡工作在osi的最后两层,物理层和数据链路层。 物理层的芯片称之为PHY。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。 以太网卡中数据链路层的芯片称之为MAC控制器, 数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 MAC和PHY之间的关系是PCI总

2010-03-01 00:29:00 12062 6

原创 PCI规范学习笔记(2)

那天和一个朋友讨论了一下MSI/MSIX方面的问题,下面是对讨论内容的整理:1.MSI-X Table和PBA结构太大,MSIX Capability又只能放到配置空间64-255这个区域,所以只能把Table和PBA放到设备内存空间了。MSIX Capability存着BAR的编号和偏移量来从配置空间索引Table和PBA。2.MSI capability里“消息地址”字

2010-01-13 13:15:00 14019 3

原创 距离与错觉

很多错觉是距离造成的。刚下飞机被老大拉去到斯坦福参加hotchip的会议,这个会议有21年历史了,无数芯片业界的牛人都会来参加。因为会议是收费的,开始有点担心被人发现我是没交钱来偷听的,有点紧张。下午的主题是SUN的Rainbow Fall和IBM的Power7,似乎这两个主题是这几天会议最引人眼球的部分。SUN的演讲者据说是Rainbow Fall的架构师,斯坦福的报告厅太大,我在二楼根本看不清

2009-09-07 15:43:00 3673 1

原创 十年

 想写点什么记录下自己的心情,好像有点困难。因为经济危机,S公司马上要O了。有幸可以去米国去见证这一历史时刻?不管怎么样,似乎又要徘徊在了一个十字路口上;与此同时,帝都的房价一路飙升,以势不可挡之势超出很多人的购买能力,好在痛苦的不止我一个,后悔的可能也不止我一个。 终于意识到现在已经是80后的黄金时代。不断地感受到了来自80后的勤奋,来自80后的睿智,来自80后的自信

2009-08-22 01:39:00 4439 4

原创 PCI规范学习笔记(1)

 PCI/PCIE配置空间按照寄存器的范围可以划分为两大部分。1. PCI Configuration Space在PCI规范中,这部分的寄存器范围是从偏移量[0-255],共256字节。PCI Configuration Space的寄存器,又可细分为以下两种类型,1.1 PCI Configuration Space HeaderPCI Configuration Sp

2009-03-22 00:07:00 14117 2

原创 OpenSolaris 2008.11 引导慢问题解决及build 106

在笔记本上安装OpenSolaris 2008.11已经三个月了,到目前为止,感觉良好。大概是因为长期使用开发版本的操作系统的缘故,对这个系统的bug的容忍度极高。但还是有一个问题让我忍无可忍,那就是系统引导的时候,速度极慢。打开笔记本,选好Grub的选项,出去泡杯茶回来,系统竟然还在引导。因为OpenSolaris默认是图形的引导,引导的过程都因为图片的显示而无法看到了。 于是,干脆编辑

2009-02-06 23:23:00 2647

原创 升级OpenSolaris 2008.11到build 105

Crossbow终于在Solaris Nevada build 105发布了,这个月又宣布在OpenSolaris可用。目前OpenSolaris 2008.11的发行版本默认使用的是release版本的软件仓库,实际上是build 101,因此升级到build 105需要使用开发版本的仓库,而且这个仓库是与Solaris Express保持同步的,也就是说,每个月都能得到最新版本OpenSo

2009-01-20 22:32:00 2035

原创 娱乐无处不在 - Sun工程师惊天发现:大吼可致硬盘潜伏期激增

早上各大开源网站的新闻里都有这么一条翻译过来的新闻 - ”Sun工程师惊天发现:大吼可致硬盘潜伏期激增“。还有一段YouTube的视频,FISHworks实验室的工程师Brendan Gregg对着阵列大吼,然后在一台电脑的监测软件上观测到了明显的时延。这条新闻的评论不少,说什么的都有,有相当多数人觉得很搞笑,甚至觉得这个Brendan Gregg很无聊。中国有句俗语,内行看门道,外行

2009-01-05 21:14:00 2941

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除