自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (6)
  • 收藏
  • 关注

原创 perf stat 输出详解

这次对照内核源码以及intel sdm手册,对perf stat统计项做一次详细的梳理。力图做到权威,减少理解的偏差。硬件事件,最终会落实到cpu pmu来统计。这些事件属于perf_event_open()接口中的PERF_TYPE_HARDWARE大类。选项编码(event/umask)Intel SDM 解释补充说明cycles0x3c, 0x00Coun...

2019-09-11 10:20:55 5461 2

原创 Linux内核进程调度子系统总结

在业务性能分析中,很多问题都是进程调度所引起。现特地总结进程调度子系统一些关键点,参考3.10内核源码。提纲task_struct家族关系pid namespace常用统计值pidstat工具调度器实时调度器CFS调度器调度时机和抢占进程负载均衡调度域调度算法task_struct在Linux内核中,task_struct是对进程和线程的统一抽象,一个task_struct结构代表了一个进程...

2019-09-11 10:20:29 1301

原创 Intel X86 优化指南阅读笔记--通用优化(后端)

OPTIMIZING THE EXECUTION CORE通用的优化准则来充分利用超标量cpu的并行性: - 遵循前端优化准则,最大化译码带宽和前端吞吐量。 - 最大化寄存器重命名带宽。本文将讨论包括如何正确处理partial registers, ROB read ports and instructions which causes side-effects on flags。 ...

2018-09-04 11:00:02 1489 1

原创 Intel X86 优化指南阅读笔记--通用优化(前端)

PROCESSOR PERSPECTIVES以下优化建议,在不同微架构下收益差别较大:指令译码的吞吐量很重要。利用好decoded ICache,Loop Stream Detector和macro-fusion能进一步提高CPU前端性能。充分利用好4个译码器来产生代码。利用好micro-fusion和macro-fusion,这样其中3个简单译码器就再被限制为只能译码只含有一条uo...

2018-08-26 21:31:00 2041

原创 Intel X86 优化指南阅读笔记--基础体系结构

Intel Sandy Bridge Microarchitecture流水线前端按顺序取指令和译码,将X86指令翻译成uop。通过分支预测来提前执行最可能的程序路径。带有超标量功能的执行引擎每时钟周期最多执行6条uop。带有乱序功能的执行引擎能够重排列uop执行顺序,只要源数据准备好了,即可执行uop。顺序提交功能确保最后执行结果,包括碰到的异常,跟源程序顺序一致。...

2018-08-24 09:43:29 2374 2

原创 坑:Centos7.4 升级内核到4.1X后出现glibc的ABI不兼容问题

Centos7升级了最新4.14内核后,发现当内存不足,发生oom killer后。如果杀死的进程是调用pthread锁的多进程程序,恭喜你,被杀掉的进程不会释放锁,华丽的死锁拉。Centos7 + 原生内核没问题,Fedora 27 + 4.14内核也没问题。Centos 7 + 4.14内核就会死锁。稳定还原Bug代码是朋友写的,就不贴出来了。红帽子估计也不会解决这个。在Centos7上升...

2018-06-06 10:15:58 1322

原创 Glibc的一个潜在的坑

问题描述: https://sourceware.org/ml/libc-help/2016-09/msg00000.html为什么会出现内存无法真正回收给系统呢?答案是永远不会回收给系统。当需要分配的内存小,达不到需要走mmap内存模式时,glibc会用brk()分配内存,如果brk()失败了呢?正如链接里代码,强行在堆顶部mmap块内存(之后的brk()会强制失败),此时glibc会...

2018-06-06 08:12:36 1429

原创 在ICT求学时最大的痕迹

好好的新书被我看成了这样。

2018-06-03 09:52:00 774 3

原创 学生时代的Linux内核读书笔记

翻硬盘时找到了2007年时阅读Linux内核的读书笔记。没想到那时居然对着英文原版书居然总结了那么多内容,加起来快300页了。他们见证了我苦逼的研究生生活。工作后都忘记了有写过这些笔记。传上来希望对学弟学妹们有所帮助。可以随意修改和转载。。。博客不能上传附件,只能传到csdn的下载中心了,系统规定下载资源分最少也要1,没资源分的对不住了~~~~~深入理解Linux网络内幕笔记 http...

2018-06-03 06:20:13 825 1

转载 (转载)浅谈高端CPU Cache Page-Coloring

cache利用是提升网络处理的永恒的话题。老文章了,需要好好琢磨下。http://www.valleytalk.org/2011/04/11/

2017-06-15 12:35:13 1361

原创 《What Every Programmer Should Know About Memory》学习笔记(第三章)

概述对网络包处理中,提升性能的关键在于CPU Cache的利用情况。因此,从体系结构角度深刻理解Cache的原理,对写出高性能数据包处理程序是必要的理论基础。这篇文档写于2007年,有点久远,但是其描述的原理仍然适用现在的主流CPU。我将从程序员的角度总结该文章的要点。CPU CachesL1 cache分为指令cache和数据cache,缓存不同内容。L2和L3不再区分,指令和数据共享。数据

2017-05-19 15:56:57 4149 1

原创 思科VPP源码分析(dpo机制源码分析)

基本概念VPP的dpo机制跟路由紧密结合在一起。路由表查找(ip4_lookup)的最后结果是一个load_balance_t结构。该结构可以看做是一个hash表,里面包含了很多dpo,指向为下一步处理动作。每个dpo都是添加路由时的一个path的结果。 dpo标准类型有: DPO_DROP, DPO_IP_NULL, DPO_PUNT, DPO_LOAD_

2017-02-27 22:46:53 6982 1

原创 思科VPP源码分析(Bihash分析)

基本概念VPP里的Bihash全名为Bounded-index extensible hash。它的最大特点是,在查找时是无锁并且线程安全的。修改操作之间会有互斥,但是修改操作时仍然可以进行查找操作。vpp里的Bihash优化成了两种,bihash_kv_8_8和bihash_kv_24_8,区别在于hash key是8字节还是24字节。最大限度的利用SSE4.2指令集中的_mm_crc32_u6

2017-02-14 16:11:00 6834 4

原创 思科VPP源码分析(feature机制分析)

基本概念早期的VPP本身的node框架比较固定,各个node之间逻辑连接已经固化。为此新版本增加了feature机制,每个feature是一个node,用户可以启用/停止某个或某些feature,也可以自己写插件,把自定义node(自己的业务逻辑)加入到指定位置。vnet_feature_arc_registration_t vpp将feature分成不同的组,每组feature称为一个arc。

2017-01-29 09:42:36 8865 1

原创 思科VPP源码分析(路由框架分析二)

基本理论

2017-01-10 07:47:29 8364 3

转载 思科VPP源码分析(路由框架分析一)

基本概念VPP作为思科开源项目,路由系统基本继承了Cisco快速转发(Cisco Express Forwarding,CEF)设计思路。作为理解VPP路由源码第一步,首先要掌握起理论基础。- Cisco Express Forwarding: 内容摘自:http://www.epubit.com.cn/book/onlinechapter/14101在前面章节的讨论中,虽然基于缓存的交换机制

2016-12-19 12:18:13 9522

转载 DPDK ACL算法介绍(转载)

http://www.jianshu.com/p/0f71f814d73ehttp://www.jianshu.com/p/0f71f814d73e关于dpdk acl算法分析,以后慢慢琢磨。

2016-11-21 20:24:53 3882

原创 思科VPP源码分析(trace机制分析)

基本概念核心函数

2016-11-17 15:01:10 4115 1

原创 思科VPP源码分析(CLI支持分析)

基本概念核心函数

2016-11-15 15:38:39 4836

原创 思科VPP源码分析(多线程支持分析)

基本概念核心函数

2016-11-12 11:51:20 6071

原创 思科VPP源码分析(ethernet node分析)

基本概念核心函数施工中。。。

2016-11-10 09:38:04 5437

原创 思科VPP源码分析(dpdk node分析)

VPP使用者几乎都会使用dpdk node作为收包驱动,本文将分析其源码。- 基本概念vlib_buffer_t dpdk收到的数据包用rte_mbuf结构描述。vpp为了兼容其它收包node(netmap,pcap等)改为使用vlib_buffer_t来描述数据包。 vlib_buffer_t紧跟在rte_mbuf后面,headroom空间中。vlib_get_next_framevlib

2016-11-07 15:29:03 11721

原创 思科VPP源码分析(node调度框架)

vpp的功能逻辑被划分为一个个node,node之间通过下一跳传递处理完的数据包集合,从而组成整个业务图谱。本文将分析node调度框架源码。基本概念 vlib_node_type_t node分为四种类型 VLIB_NODE_TYPE_INTERNAL:对数据包真正处理的业务node。 VLIB_NODE_TYPE_INPUT:收包逻辑node,比如:dpdk,pcap等。 VLIB_N

2016-11-05 07:30:00 12633

原创 思科VPP源码分析(内存管理)

思科今年开源的vpp项目,在intel开源的dpdk之上,构建的数据包处理框架。dpdk组件已经成功榨干硬件IO性能,剩下的瓶颈落在业务处理部分,其中最关键的又在内存访问优化上。内存优化一句话概括:提高CPU L1,L2,L3 cache命中率。这里将分析vpp内存管理部分源码。vec变长数组(vec_bootstrap.h) len是数组元素个数,不是字节长度。每个数组元素都看作是等大小。

2016-10-20 15:30:33 12878

cppcheck的是用手册

cppcheck的使用手册,方便大家用来检测代码缺陷

2013-06-30

深入理解Linux内存管理

关于linux2.4内存管理的,写的不错,英文版

2008-03-07

自顶向下方法与internet特色第3版答案

自顶向下方法与internet特色第3版答案

2007-11-14

空空如也

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

TA关注的人

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