- 博客(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
5604
2
原创 Linux内核进程调度子系统总结
在业务性能分析中,很多问题都是进程调度所引起。现特地总结进程调度子系统一些关键点,参考3.10内核源码。提纲task_struct家族关系pid namespace常用统计值pidstat工具调度器实时调度器CFS调度器调度时机和抢占进程负载均衡调度域调度算法task_struct在Linux内核中,task_struct是对进程和线程的统一抽象,一个task_struct结构代表了一个进程...
2019-09-11 10:20:29
1388
原创 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
1594
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
2201
原创 Intel X86 优化指南阅读笔记--基础体系结构
Intel Sandy Bridge Microarchitecture流水线前端按顺序取指令和译码,将X86指令翻译成uop。通过分支预测来提前执行最可能的程序路径。带有超标量功能的执行引擎每时钟周期最多执行6条uop。带有乱序功能的执行引擎能够重排列uop执行顺序,只要源数据准备好了,即可执行uop。顺序提交功能确保最后执行结果,包括碰到的异常,跟源程序顺序一致。...
2018-08-24 09:43:29
2558
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
1381
原创 Glibc的一个潜在的坑
问题描述: https://sourceware.org/ml/libc-help/2016-09/msg00000.html为什么会出现内存无法真正回收给系统呢?答案是永远不会回收给系统。当需要分配的内存小,达不到需要走mmap内存模式时,glibc会用brk()分配内存,如果brk()失败了呢?正如链接里代码,强行在堆顶部mmap块内存(之后的brk()会强制失败),此时glibc会...
2018-06-06 08:12:36
1487
原创 学生时代的Linux内核读书笔记
翻硬盘时找到了2007年时阅读Linux内核的读书笔记。没想到那时居然对着英文原版书居然总结了那么多内容,加起来快300页了。他们见证了我苦逼的研究生生活。工作后都忘记了有写过这些笔记。传上来希望对学弟学妹们有所帮助。可以随意修改和转载。。。博客不能上传附件,只能传到csdn的下载中心了,系统规定下载资源分最少也要1,没资源分的对不住了~~~~~深入理解Linux网络内幕笔记 http...
2018-06-03 06:20:13
901
1
转载 (转载)浅谈高端CPU Cache Page-Coloring
cache利用是提升网络处理的永恒的话题。老文章了,需要好好琢磨下。http://www.valleytalk.org/2011/04/11/
2017-06-15 12:35:13
1425
原创 《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
4227
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
7334
原创 思科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
7052
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
9092
1
转载 思科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
9898
转载 DPDK ACL算法介绍(转载)
http://www.jianshu.com/p/0f71f814d73ehttp://www.jianshu.com/p/0f71f814d73e关于dpdk acl算法分析,以后慢慢琢磨。
2016-11-21 20:24:53
3978
原创 思科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
12288
原创 思科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
13142
1
原创 思科VPP源码分析(内存管理)
思科今年开源的vpp项目,在intel开源的dpdk之上,构建的数据包处理框架。dpdk组件已经成功榨干硬件IO性能,剩下的瓶颈落在业务处理部分,其中最关键的又在内存访问优化上。内存优化一句话概括:提高CPU L1,L2,L3 cache命中率。这里将分析vpp内存管理部分源码。vec变长数组(vec_bootstrap.h) len是数组元素个数,不是字节长度。每个数组元素都看作是等大小。
2016-10-20 15:30:33
13229
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人