自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 并发(二)——linux内核同步机制分析

目录一、内核产生并发的原因二、上下文三、同步3.1 基本的同步手段3.1.1 preempt_enable / preempt_disable3.1.2local_irq_enable / local_irq_disable3.1.3local_bh_enable /local_bh_disable3.1.4spin_lock / spin_unlock...

2019-07-24 23:52:18 365

原创 Linux设备驱动——PCI总线的初始化

目录一、概述二、初始化分析2.1pcibus_class_init2.2pci_driver_init2.3acpi_pci_init2.3.1 基于ACPI的PCI设备枚举过程2.4 pci_arch_init2.5pci_slot_init2.6pci_subsys_init三、参考一、概述二、初始化分析pci初始化涉及很多函数,这...

2019-07-24 11:16:18 3113 1

原创 LVS

目录一、概述二、LVS2.1 术语2.2 LVS模型2.2.1 NAT2.2.2 DR2.3 调度方式一、概述主要为了了解,LVS是一个四层的LB二、LVS2.1 术语RS Real server VS Virtual server VIP Virtual IP RIP DIP2.2 LVS模型NAT TUN DR2.2.1 N...

2019-07-23 18:08:06 240

原创 PCI

目录一、概述二、PCI2.1 基本概念2.2 PCI资源2.2.1 配置空间2.2.2 BAR空间2.2.3 PCI 中断2.2.4 DMA2.3 处理器访问PCI设备流程三、PCIe3.1 基本概念3.2 PCIe资源3.2.1 扩展配置空间3.2.2 MSI/ MSI-X一、概述主要总结一下掌握PCI驱动应该具备的PCI的基本知...

2019-07-22 16:15:32 335

原创 同步(二) —— 操作系统wait,signal原句实现分析

目录一、概述二、wait & signal基本原理2.1 Lost Wake-Up Problem三、linux中的实现3.1 等待队列3.2 wait_event_interruptible3.3wake_up_interruptible3.3.1 Thundering Herd Problem四、参考一、概述在OS中,一种同步的手段是wa...

2019-07-21 15:48:23 3022

原创 linux网络子系统分析(四)—— INET连接建立API分析之connect/accept

目录一、概述二、connect2.1 connect流程2.1.1 路由查找2.1.2connect端口分配2.1.3 再次查找路由2.1.4 初始化seq2.1.5 构造并发送SYN三、三次握手主要流程一、概述主要关注流程,其他如滑动窗口变化等后续文章统一分析。二、connectconnect的函数原型是:int connect(int ...

2019-07-21 15:11:42 868

原创 linux网络子系统分析(三)—— INET连接建立API分析之bind & listen

目录一、概述二、bind2.1TCPbind2.1.2 UDPbind2.1.3 bind tips2.2 listen一、概述前面分析了socket流程,这里继续分析inet连接建立的其他socket API二、bindbind函数声明如下:int bind(int sockfd, const struct sockaddr *addr,soc...

2019-07-21 14:36:34 983

原创 Linux设备驱动——驱动模型

目录一、概述二 、BUS2.1 说明2.2 数据抽象2.3 接口2.4 实现三、device3.1 说明3.2 数据抽象3.3 接口3.4 实现四、driver4.1 说明4.2 数据抽象4.3 接口4.4 实现五、class5.1 说明5.2 数据抽象5.3 接口5.4 实现六、小结一、概述驱动模型描...

2019-07-05 19:25:00 267

原创 DPDK分析——KNI

目录一、概述二、KNI2.1 应用场景2.2 KNI内核模块2.3 用户态使用2.3.1rte_kni_init2.3.2rte_kni_alloc2.3.3rte_kni_update_link2.3.4rte_kni_tx_burst2.3.5rte_kni_rx_burst2.3.6rte_kni_handle_request三、参...

2019-07-04 21:46:33 5904

原创 编程基础(五)—— 虚拟内存

目录一、概述二、虚拟内存的出现三、虚拟内存发展和演进3.1 DynamicRelocation (base and bounds)3.2 segmentation3.3 paging3.3.1 第一种优化——TLB3.3.2 第二种优化——多级页表四、参考一、概述OSTEP memory virtualization相关章节笔记,主要为了理清虚拟内存...

2019-06-26 19:03:39 911

原创 并发 (一)——基本概念

目录一、前言二、基本术语三、同步3.1评估一个锁3.2锁的实现3.2.1 test-and-set3.2.2 compare-and-swap / compare-and-exchange3.2.3 load-linked & store-condition3.2.4 fetch-and-add3.2.5 yield3.2.6 sleepi...

2019-06-26 10:43:22 207

原创 中断(二)—— x86 APIC

目录一、概述二、APIC2.1 I/O APIC2.1.1 功能2.1.2 I/O APIC 访问2.1.3 I/O APIC中断流程2.2 Local APIC2.2.1 功能2.2.2 Local APIC 访问一、概述本文记录一下x86下 APIC的基本工作原理。二、APIC8259只适用用单处理器,为了适用SMP提出APIC。一个典型的A...

2019-06-26 10:21:16 2517 2

原创 Linux 内存管理(三)—— SLUB

目录一、概述二、SLUB2.1 数据结构2.2初始化2.2.1 静态建立过程2.3 API2.3.1kmem_cache_create2.3.2kmem_cache_alloc2.3.3 kmem_cache_free2.3.4 kmalloc/kfree三、参考一、概述伙伴系统最小的分配单位是页,这对于较小的内存需求会造成浪费,所以在伙...

2019-06-25 22:42:43 2574

原创 Linux 内存管理(二)——伙伴系统

目录一、概述二、内存组织2.1 数据抽象2.2 伙伴系统的建立2.2.1 node和zone的数据结构初始化2.2.2 zoneref初始化2.2.3 伙伴系统建立2.3 伙伴系统API2.3.1 分配2.3.2释放页三、小结一、概述只涉及伙伴系统初始化,分配,释放,暂不涉及页面回收。二、内存组织NUMA结构中每个node对应有一块物理...

2019-06-23 23:03:13 1387

原创 Linux 内存管理(一)——地址空间

目录一、概述二、地址空间2.1 物理地址空间布局2.2 kernel image 布局2.3 虚拟地址空间三、参考一、概述这篇文章主要介绍地址空间的布局及其建立过程。二、地址空间Linux x86_64下内存的初始化流程可以参照下图:本文主要是对上图绿色部分的描述。2.1 物理地址空间布局在执行setup_arch之前,内核通过e820(in...

2019-06-23 22:15:16 948

原创 分析“关于Linux内核引入的accept_local参数的一个问题”

目录一、概述二、分析2.1 问题描述2.2 分析流程一、概述参考关于Linux内核引入的accept_local参数的一个问题,自己分析一下二、分析2.1 问题描述ip link add veth0 type veth peer name veth1ip addr add dev veth0 1.1.1.2/24ip addr add dev veth1 ...

2019-06-01 16:53:51 2349 5

原创 多网卡配置同一网段IP情况解析

目录一、概述二、分析一、概述一般情况下是不这么配置的,但是实际项目中总有些奇葩的甲方。在虚拟机中模拟一下这个情形。二、分析虚拟机中添加三个网卡,ip地址配置成同一个网段,桥接。主机的IP地址是192.168.0.109ens33:inet 192.168.0.112 netmask 255.255.255.0 broadcast 192.168.0.255 ...

2019-05-29 23:30:29 12044 2

原创 DPDK初始化分析(五)

目录一、概述二、驱动注册三、驱动初始化3.1 rte_eth_dev_create3.2 eth_i40e_dev_init3.2.1 i40e_init_shared_code3.2.2i40e_init_adminq_parameter3.2.3i40e_init_adminq3.2.4i40e_hw_init3.2.5i40e_config_a...

2019-05-09 14:46:19 6303

原创 编程基础(四)——cache之一

目录一、概述二、原理2.1 局部性原理(principle of locality)2.2 Memory Hierarchy2.3 性能评估三、cache的基本要素3.1 cache的组成3.1.1利用hash表理解cache参数和行为3.2 cache的分类3.3cacheline size3.4cache hit & cache mis...

2019-05-04 22:29:59 2089

原创 DPDK初始化分析(三)

目录一、概述二、流程分析2.1eal_hugepage_info_init2.1.1 hugepage_info_init2.1.2create_shared_memory2.2rte_eal_log_init2.3rte_eal_vfio_setup2.4rte_eal_memzone_init2.4.1rte_fbarray_init2.4....

2019-05-02 17:48:29 4141 1

原创 DPDK初始化分析(四)

目录一、概述二、流程2.1rte_eal_tailqs_init2.2rte_eal_alarm_init2.3rte_eal_timer_init2.4eal_check_mem_on_local_socket2.5eal_thread_init_master2.6 创建slave thread2.7 子线程启动2.8rte_service_i...

2019-05-02 17:45:44 2029

原创 DPDK初始化分析(二)

目录一、概述二、流程分析2.1rte_eal_intr_init2.2rte_mp_channel_init2.3rte_mp_dev_hotplug_init2.4 rte_bus_scan2.5 rte_bus_get_iommu_class一、概述初始化分析的第二个部分,主要包括中断初始化和bus扫描流程。二、流程分析2.1rte_eal_...

2019-05-02 17:42:23 3145

原创 DPDK初始化分析(一)

目录一、概述二、初始化流程2.1 main之前2.2 rte_eal_init​2.3rte_eal_cpu_init2.4eal_parse_args2.4.1eal_parse_common_option2.4.2 eal_create_runtime_dir2.4.3 eal_adjust_config2.5eal_plugins_init...

2019-05-02 15:12:46 6017 1

原创 DPDK分析——UIO

目录一、概述二、实现2.1 UIO驱动2.1.1 API2.1.2UIO初始化2.1.3 UIO注册2.2 IGB_UIO驱动2.2.1 初始化2.3 用户态使用2.3.1pci_uio_alloc_resource2.3.2pci_uio_map_resource_by_index一、概述DPDK通过内核的UIO机制将硬件资源(M...

2019-05-02 14:43:34 6432

原创 Linux设备驱动——驱动模型之基本结构

目录一、概述二、kobject2.1 说明2.2 数据抽象2.3 接口2.4 实现三 、kset3.1 说明3.2 数据抽象3.3 接口3.4 实现四、uevent4.1 说明4.2 数据抽象4.3 接口4.4 实现四、总结一、概述将以前的笔记整理一下,便于查阅。二、kobject2.1 说明kobject(k...

2019-04-30 15:18:06 586

原创 linux网络子系统分析(五)——netfilter

目录一、概述二、netfilter2.1 结构2.2 数据抽象2.2.1 table的表示2.2.2 nf_hook_ops2.3 接口2.4 实现2.4.1 初始化2.4.2 table的注册2.4.2 处理流程一、概述二、netfilter2.1 结构第一个层次时table,有四个分别时filter,nat,mangle,r...

2019-03-17 16:00:10 2242 1

原创 linux设备驱动——字符设备驱动

目录一、概述二、字符设备2.1 字符设备数据抽象2.1.1字符设备方法2.1.2cdev接口2.2设备号2.2.1 设备号相关的接口三、设备节点四、实例一、概述二、字符设备2.1 字符设备数据抽象struct cdev { struct kobject kobj; struct module *owner; const struc...

2019-03-10 09:21:13 175

原创 linux网络子系统分析(三)—— 设备无关层

目录一、概述二、数据抽象和接口2.1 net_device2.2 API及说明2.2.1 net_device分配2.2.2 net_device 注册2.2.3 端口状态管理2.3 总结2.3.1 设备状态变迁2.3.2 发送和接收队列的建立2.3.3 通知链三、从qdisc到设备发送四、报文的接收流程4.1 NAPI4.2 netif...

2019-02-25 15:59:25 1550

原创 linux网络子系统分析(二)—— 协议栈分层框架的建立

目录一、综述二、INET的初始化2.1 INET接口注册2.2 抽象实体的建立2.3 代码细节分析2.3.1 socket参数三、其他协议3.1PF_PACKET3.2 PF_NETLINK3.3 PF_UNIX四、参考一、综述在上一篇中,主要分析了linux网络协议栈层次划分,列举了层与层之间的主要接口,本文结合实际代码和数据结构进行进一步说...

2019-02-24 22:32:12 737

原创 memory barrier

目录一、概述二、指令乱序2.1 为什么要乱序2.2 如何实现乱序2.3 乱序执行带来的副作用三、memory barrier3.1 memory consistency model3.2 memory barrier3.3 锁参考一、概述memory barrier 产生的原因要深入理解体系结构,这篇文字有点敷于表面,记录一个分析的思路二、指令乱...

2019-02-24 22:21:09 883

原创 中断(一)—— 综述

目录一、概述二、中断的框架2.1 硬件示意图2.2 中断处理流程2.2.1 中断处理过程中典型的寄存器2.2.2 PIC中断处理流程2.2.3 CPU侧中断处理流程三、中断的上半部和下半部3.1 上半部和下半部的由来四、小结五、参考一、概述操作系统需要对硬件外设进行管理,但是二者的处理速度往往不在一个数量级上,需要一种方法是CPU和外设协同工作而...

2019-02-24 21:42:58 309

原创 linux网络子系统分析(一)——协议栈分层实现综述

目录一、概述二、Linux网络子系统的分层2.1 为何要分层2.2 协议无关接口2.3 网络协议层2.4 设备无关接口2.5 设备层三、参考一、概述开篇,总结一下对linux协议栈的理解,备忘。关于符号约定,代码路径使用[]包含,结构体使用结构体定义名称+{}表示二、Linux网络子系统的分层2.1 为何要分层linux网络子系统实现需要:...

2019-02-18 11:32:40 2389

原创 Performance Engineering of Software Systems (四) ——工具使用

目录一、概述二、perf2.2 perf stat2.3 perf top2.4 perf annotate2.5 perf record2.6 perf report三、intel vtune四、case study——矩阵乘法五、参考一、概述对应于lecture-1-matrix-multiply-a-case-studylecture-...

2019-02-17 14:23:55 855

原创 编程基础(三)——体系结构之三

目录一、概述二、ROB2.1 ROB结构2.2 Tomasulo with ROB2.2.1 issue2.2.2 dispatch2.2.3 broadcast2.2.4 commit2.2.5 引入rob后对比三、其他3.1 Unified Reservation Station3.2 Terminology Confusion四、load ...

2019-02-15 17:23:19 1438

原创 编程基础(三)——体系结构之二

目录一、概述二、性能指标和评估三、pipeline3.1 一个典型的五级流水线3.2 pipeline stall3.3 pipeline flush3.4 forward3.5 Dependencies3.5.1 Control dependencies3.5.2 Data dependencies3.6 冒险四、branch prediction...

2019-02-15 13:27:07 2223 1

原创 Performance Engineering of Software Systems (一)——准备工作

目录一、概述二、vtune2.1 安装2.2 使用三、总结 一、概述一直都想系统的学习一下代码优化,这几天无意从豆瓣上发现有一门叫做Performance Engineering of Software Systems的MIT公开课,简单看了下简介感觉无比汗颜——居然是本科生的课程。感慨有个好的引导真是重要。静下心来,觉得还是少发牢骚,研究一下一直感兴趣的东西吧。...

2019-02-13 17:09:58 1125

原创 编程基础(三)——体系结构

目录一、概述二、流水线2.1 基础知识2.2 顺序实现2.3 经典的五级流水线2.4 流水线冒险2.4.1 结构冒险2.4.2 数据冒险2.4.3 控制冒险2.5 动态调度2.6 超标量 & 超线程三、参考一、概述主要是按照自己的思路对体系结构书籍和文章的一些罗列和总结,主要是作为性能优化的一个基础,梳理自身的知识,备忘,可能其中有理...

2019-02-13 17:06:49 726

原创 编程基础(二)——汇编

目录 一、概述二、x86_64 (AT&T)2.1 数据格式2.2 寄存器2.2.1格式2.2.2 调用规范2.3  寻址2.4 指令2.4.1 数据传送指令2.4.2 栈操作2.4.3 算术&逻辑操作2.4.4 乘法&除法2.4.5 控制——比较指令2.4.6 控制——跳转2.4.7 控制——循环2.4....

2019-02-13 17:06:03 711

原创 编程基础(一)——计算机中的数

目录一、综述二、整数2.1 整数的表示2.1.1 ones' complement & two's complement2.1.2 有符号数和无符号数的转化关系2.1.3 数的扩展2.2 整数的运算2.2.1 无符号加法2.2.1 补码加法三、数的特性对C编程的影响3.1 无符号数和有符号数3.1.1  数3.1.1 cast3.1....

2019-02-13 17:04:31 673

netgraph 介绍

freebsd netgraph tutorial 有这方面的需求的可以看看

2018-09-30

空空如也

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

TA关注的人

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