深入底层,挖掘应用 Problem Shooter/Performance Analyzer
1.1 存储机制 每个镜像由多个镜像层组成,镜像层都是只读的,从下往上,以栈方式组合在一起,组成容器的根文件系统。镜像文件默认保存在主机的/var/lib/docker/volumes中。
这是一篇关于Docker技术的初级文档,主要针对Docker的babies。当然,如果是老鸟也欢迎温故知新。 2. Docker组件(C/S) Docker组件分为客户端和服务端。
1.1.1 关于blktrace 我们知道,在iostat工具中,await表示单个I/O所需的平均时间,但它同时包含了I/O Scheduler所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标,至于iostat的svctm更是一个废弃的指标。
随着计算机网络和Internet普及,计算机很久之前就开始遭受各种入侵了。因此为了阻止入侵,就产生了网络防火墙以及网络数据分析的需求。 而这个netfilter就是在linux系统中来实现防火墙功能。
Ethtool工具源码剖析 ethool是一个实用的工具,用来给系统管理员以大量的控制网络接口的操作。可以用来控制接口参数,速度,介质类型,双工模式,DMA环设置,硬件校验和,LAN唤醒操作等。本人经常用于来观测物理链路层的链接状态,用于判断网线是否正常,不用去机房看网卡亮没亮灯了。
e1000网络驱动分析 e1000是intel千兆以太网卡的驱动源码。官方关于驱动的使用可以参考如下链接。 https://www.intel.cn/content/www/cn/zh/support/articles/000006866/network-and-i-o/ethernet-products.html 本文主要结合e1000驱动的源码进行分析. 版本是#define DRV_VERSION "7.3.21-k8-NAPI",这个是Ubuntu4.4.0-63版本上的内核。
linux中pci设备知识 Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分。PCI(Periheral Component Interconnect)有三种地址空间:PCI I/O空间、PCI内存地址空间和PCI配置空间。
Linux协议栈(8)——传输层实现 ip_local_deliver负责分发IP分组传输的数据内容。基于IP的主要传输协议分别是UDP和TCP。处理函数分别是udp_rcv和tcp_rcv。
这篇主要学习链路层在内核协议栈的实现,包括初始化、注册以及接收发送,会涉及相关函数和代码所在位置。 我们知道以太网不仅可以传输IP分组,还可以传输其他协议的分组,接收系统必须能够区分不同的协议类型,以便将数据转发到正确的例程进一步处理。
Linux协议栈(4)——sk_buff及代码 Linux内核网络中最终要的两个数据结构是sk_buff和net_device。本章介绍sk_buff结构体。 sk_buff结构可能是网络代码中最重要的数据结构。
module_init函数对做驱动开发的同学是在太熟悉了,但是关于底层的知识可能大家有些不愿去了解,而其中知识对于网络初始化也直接相关,所以先将此分享。 在驱动程序中有module_init函数,该函数定义在文件 include/linux/module.h中(以前好像在include/linux/init.h中),如下。