自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (20)
  • 收藏
  • 关注

原创 linux下用户态程序coredump生成方法

总结:1.打开coredump开关 登陆 LINUX 服务器,任意位置键入 echo "ulimit -c 1024" >> /etc/profile(1024 限制产生的 core 文件的大小不能超过 1024kb,可以使用参数unlimited,取消该限制) 退出 LINUX 重新登陆 LINUX 键入 ulimit -c,如果显示 10...

2019-08-19 19:30:21 906

原创 perf内核调优

在内核方面,人们的兴趣五花八门,有些内核开发人员热衷于寻找整个内核中的热点代码;另一些则只关注某一个主题,比如 slab分配器,对于其余部分则不感兴趣。对这些人而言,perf 的一些奇怪用法更受欢迎。当然,诸如perf top,perf stat, perf record 等也是内核调优的基本手段,但用法和一样,无需重述。2.使用 tracepoint 当 per...

2019-08-19 19:13:49 1908

原创 perf-应用程序的调优与使用

Perf 是用来进行软件性能分析的工具。 通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。 使用 perf,您可以分析程序运行期间发生的硬件事件,比如 instruc...

2019-08-19 19:05:14 738

原创 ipv4网络配置方法

1.打开配置文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 (2)添加内容至配置文件 IPADDR=192.168.100.X(分配) NETMASK=255.255.255.0(定值) GATEWAY=192.168.100.0...

2019-08-19 19:02:43 7404

原创 tcpdump和wireshark抓包方法介绍

1.tcpdump工具的使用:用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 语法: tcpdu...

2019-08-19 18:58:16 347

原创 网卡bonding配置

bonding配置有下面几种方式,业务可供参考:1)系统配置文件形式(ifcfg-bond0)[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0        #设备名称BOOTPROTO=static      #静态IPONBOOT=yes         #自动启动IPADDR=17...

2019-08-19 18:53:10 2071

原创 shell脚本积累(不断更新)

1.去除操作主要原则:# 从左开始 %从右开始#象征要寻找最左边的/(短的)##象征要寻找最右边的/(长的)而*是通配符,象征着任意长度的字符串区别:${0##*/} ${0%/*} (知道这二个就够用了吧!!)不同点的地方在于,#是从左边头部开始寻找起,%是从尾部开始寻找起(If the pattern matches a trailing portion)$...

2019-08-19 18:51:02 155

原创 内核模块的加载与卸载

1: 内核源码存放的位置 /usr/src/linux 或者 /usr/src/kernel2: 内核模块存放的位置 /lib/modules/($uname -r)/kernel3: 模块的依赖性:检查 /lib/modules/($uname -r)/modules.dep文件,它记录了内核支持模块的依赖关系。 .dep文件的制作:通过depmod命令 eg:...

2019-08-19 18:46:11 2079

原创 虚机cpu和mem的配置(cputune和numatune)

1.cpu1)CPU Allocation<domain> ... <vcpu placement='static' cpuset="1-4,^3,6" current="1">2</vcpu> <vcpus> <vcpu id='0' enabled='yes' hotpluggable='no' ...

2019-08-18 23:25:01 4525

原创 docker网络配置详解

1.默认的传统网桥通信方式docker的通信使用的是传统的linux网桥,他会在主机上虚机出来一个名为docker0的接口,执行docker0:2.docker0网桥连接方式网络配置过程如下:a. 在宿主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络...

2019-08-18 22:33:17 301

原创 preempt_disable宏

1.相关数据结构及函数如下:struct thread_info中{ unisgned int preempt_count;//线程抢占引用计数器,为0才能被抢占}2.preempt_disable的定义#define preempt_disable() \do{ \ inc_preempt_count(); \//增加preempt_cou...

2019-08-18 22:11:10 2551

原创 kmem_cache_alloc核心函数slab_alloc_node的实现详解

kmem_cache_alloc()是申请slub对象的入口函数,他的核心实现就是slab_alloc_node函数,此函数涉及的面很广,包括cgroup,进程调度,内存管理,cpu抢占等细节,需要仔细推敲深究;代码版本:kernel-3.10(一)全函数概要 /* * Inlined fastpath so that allocation functions (kma...

2019-08-18 16:35:35 3856

原创 内存管理-slub对象的分配和释放(三)

内核版本:3.10.0-693.21.1.el7.x86_641.slub cache内存的分配:kmem_cache_alloc(详见kmem_cache_alloc核心函数slab_alloc_node的实现详解)  对象的分配与释放不是直接在kmem_cache_node上面操作的,而是在kmem_cache_cpu上。一个kmem_cache维护了一组kmem_cache_cpu,分...

2019-08-18 16:29:00 681

原创 内存管理-内存slub分配器(二)

一、为啥越来越多使用slub slab分配器的弊端,我们知道slab分配器中每个node结点(用slab结构体kmem_cache中的kmem_cache_node结构体表示node)有三个链表,分别是空闲slab链表(slabs_free),部分空slab链表(slabs_partial),已满slab链表(slabs_full),这三个链表中维护着对应的slab缓冲区。我们也知道...

2019-08-18 16:18:10 681

原创 mac头和ip头部详解

报文封装整体结构mac帧头定义 /*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType;      //上一层协议类型,如0x0...

2019-08-18 14:26:03 9328

原创 is there a way to find the list of slab aliases for a given kmem_cache

IntroductionThe kmem subsystem in RHEL7 has changed to include cache aliases, which can be confusing. This article covers a bit of the internals of the slab aliases and which should give some pointe...

2019-08-18 13:26:13 722

原创 vmcore分析和实战

经典案例收集:1.解析结构体成员变量:http://blog.chinaunix.net/uid-14528823-id-4432077.html2.解析链表:https://access.redhat.com/solutions/27865913.Crash工具实战-结构体解析(skb相关解析)1.基础知识 1)工具:crash、vmcore、kernel对应版本的ke...

2019-08-18 13:05:34 12993

原创 调度的基本概念

一.调度的基本概念1.时间片:进程在被抢占前预先设置好占用处理器的时间段。默认时间片时间为10ms,linux的CFS(完全公平调度算法)并没有直接使用时间片分配给进程,它是将处理器的使用比划分给进程。2.多任务操作系统分为抢占式和非抢占式。抢占式会被强制挂起,非抢占式只能自己主动停止,否则一直执行。linux系统是抢占式是系统。二.调度程序设计的基础1.i/o消耗性进程:大部分时...

2019-08-15 19:39:31 6157 1

原创 进程管理的基础

一.进程管理的基本概念 1.进程四要素: 有一段可执行的代码,代码不一定时进程专有,可以与其他进程共享; 有起码的私有财产,就是系统专有的系统堆栈空间; 有户口,就是内核中的task_struct数据结构,称为"进程控制块",这个结构是进程的"财产登记卡",记录着进程所占有的各项资源; 有独立的存储空间,就是拥有专有的用户空间,进一步意味着除了有前述...

2019-08-15 19:38:04 385 1

原创 linux日志级别的正确使用(printk)

1.内核有严格的日志级别控制,他实际控制的是printk的输出以及对应内核驱动模块还有dev_dbg,dev_printk等函数的输出;我们可以通过proc接口来进行控制台输出我们需要的debug信息;内核日志级别有以下0-7共8级,数字越低级别越高: EMERG 0 ALERT 1 CRIT 2 ERR 3 WARNING 4 NOTICE 5 INFO 6 DEBUG 72...

2019-08-15 19:23:18 1373

原创 ixgbe驱动不支持三方兼容光模块SFP+SFP+或者QSFP的解决方案

ixgbe光纤网卡的驱动在默认情况下不支持第三方兼容光模块,会导致网卡驱动加载失败,ifocnfig看不到对应的网卡:1.现象: 1)执行lspci |grep 8255能看到网卡在pci设备中 2)但是使用ifconfig -a命令,却找不到网卡,使用demsg|grep ixgbe发现以下报错:此现象表明:不支持第三方模块SFP+或者QSFP2.解决问题的方法 ...

2019-08-09 15:37:47 5757

原创 grub2使用详解(官方手册)

https://www.cnblogs.com/f-ck-need-u/archive/2017/06/29/7094693.html

2019-07-25 20:27:47 1438

原创 kernel命令行参数(grub启动项参数)

https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html

2019-07-25 19:06:51 1985

原创 内存管理-基础知识框架和关键结构体(一)

一、基本概念 1.逻辑地址:包含在机器语言指令中的用来指定一个操作数或者一条指令的地址。每一个逻辑地址由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址的距离。 2.线性地址(又叫虚拟地址):是一个32位无符号整数,可以用来表示高达4GB的地址,也即是说,高达4294967296个内存单元。线性地址通常用十六进制进行表示,范围为0x00000000到0xffffffff...

2019-07-13 18:09:16 485

原创 一个hard lockup的vmcore实例解析

Hard lockup occurs due to an infinite loop encountered in distribute_cfs_runtime()环境Red Hat Enterprise Linux 7.3 (kernel-3.10.0-514.el7.x86_64)问题Hard lockup occurs due to an infinite loop encounte...

2019-07-09 20:42:04 1093

原创 linux scp(ssh)免密发送(登陆)配置方法

假设要将A主机(192.168.123.200)root用户下的某个文件备份同步到B主机(192.168.123.201)。 STEP1.生成公钥私钥对 root@localhost:~# ssh-keygen -t rsa a.接下来按默认的连续三次确认即可。 b.可以看到~/.ssh/目录下多了两个文件id_rsa和id_...

2019-07-09 20:36:38 670

原创 git的使用

1.git:分布式的版本控制工具概念 Git在Wikipedia上的定义:它是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。Git最初被LinusTorvalds开发出来用于管理Linux内核的开发。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖 于网络和中心服务器。 Git的出现减轻了许多开发者和开源项目对于...

2019-07-08 14:38:57 124

原创 hardlockup的原理说明

watchdog_timer:expire time: 4s =(watchdog_threshold*2)/5(watchdog_threshold由/proc/sys/kernel/watchdog_thresh配置,系统默认是10,下同)function:updating hrtimer_interrupts when watchdog_timer expires ...

2019-07-08 14:27:17 1995

原创 跟踪slab分配堆栈流程的方法(perf、systemtap)

跟踪slab分配堆栈流程的方法(perf、systemtap)内存泄露是在解决内核故障会遇到的棘手情况,根据具体的内存使用情况,追踪相应slab cache的分配堆栈流程,是追踪泄露原因的第一步,接下来根据内核版本的不同,介绍二种跟踪slab分配的方法;1.在perf支持probe功能的情况下(内核版本高于3.10内核),可以使用perf probe追踪相应slab cache的分配堆栈流程;...

2019-07-05 10:46:08 1070

原创 qemu前后端features协商过程分析(vhost_user后端)

约定: 1)协商过程涉及的核心是:dpdk(ovs)vhost_user,qemu:vhost_user,qemu:virtio_net,guest virtio_net,共4个模块,每个模块都有自己的feature; 2)由于整个协商是自后端到前端,再由前端到后端的,即dpdk(dvs)->qemu->gues...

2019-06-29 14:36:06 2443

原创 系统内核快速编译并替换的方法

对于一个内核功能和补丁的合入,要想快速验证功能正确性,提高项目CI成功率,最好自己快速进行验证,以下方法可以帮助快速编译,替换内核,做功能验证;1,修改合入补丁或者功能;2.修改.config文件,修改内核版本名称,如:CONFIG_LOCALVERSION="hzj-udptest";以上做法的好处:这个修改的是内核版本的名称,后期安装的vmlinuz和initramfs都是会有这个标...

2019-06-05 10:35:36 873

原创 /proc/meminfo 文件

参考:http://linuxperf.com/?cat=7/proc/meminfo是了解Linux系统内存使用状况的主要接口,我们的命令行工具free、vmstat等都是通过此接口获得;但是他的信息远比free等命令丰富的多;接下来对此文件进行探究。内核负责输出/proc/meminfo的源代码是:fs/proc/meminfo.c :meminfo_proc_show();基本的内容...

2019-04-30 16:34:15 1692 1

原创 swap使用率达到100%的解决办法

一:方法1.增加物理内存的大小,减少swap使用的可能性;2.杀掉使用swap最多的进程,这种方法比较low,不太建议了;3.通过创建swapfile分区,来增加swap空间;4.主动swapout:swapoff -a 执行结束后,再执行swapon -a。二:具体操作1.增加物理内存就无话可说了;2.找到10个最大进程数量: #!/bin/bashps ax -o p...

2019-04-18 20:22:57 17306 1

原创 linux中的numa和swap

linux中的numa和swap一.linux的numa技术(非一致性内存访问)1.numa的基础认知 所有处理器都共享系统总线,因此当处理器的数目增大时,系统总线的竞争冲突加大,系统总线将成为瓶颈,所以目前SMP系统的CPU数目一般只有数十个,可扩展能力受到极大限制。NUMA技术有效结合了SMP系统易编程性和MPP(大规模并行)系统易扩展性的特点,较好解决了SMP系统的可扩展性...

2019-04-15 20:23:56 1868

转载 Linux内核基础--事件通知链(notifier chain)

内核通知链1.1. 概述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notificationchain)。&nbsp...

2018-09-30 16:25:24 428

转载 x86体系Linux内核进程切换原理(64位和32位)

首先简单提一下这个宏和函数的被调用关系:&amp;nbsp;&amp;nbsp;&amp;nbsp;schedule() --&amp;gt; context_switch() --&amp;gt; switch_to --&amp;gt; __switch_to()&amp;nbsp;这里面,schedule是唯一调用switch_to的函数,涉及到一些调度算法,这里

2018-09-20 14:47:57 1190

转载 C语言汇编-函数调用栈

函数调用--函数栈 函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回结果,还有大家比较熟悉的一句话,就是函数调用是在栈上发生的,那么在计算机内部到底是如何实现的呢?&nbsp;对于程序,编译器会对其分配一段内存,在逻辑上可以分为代码段,数据段,堆,栈代码段:保存程序文本,指令指针EIP就是指向代码段...

2018-09-19 19:09:10 660

转载 C语言汇编-函数调用堆栈的过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuoya_/article/details/80516246 本篇来分析函数调用的过程:通过下面一个简单的例子来进入话题:#include&amp;lt;stdio.h&amp;g...

2018-09-19 18:49:04 1529

原创 虚拟交换机----》openvswitch

1.openvswitch的原理    原理讲解:   当我们创建一个交换机(网桥)之后即(ovs-vsctl add-br brname),此时网络功能不受影响,但是会产生一个虚拟网卡,名字为brname(与网桥名字同名,可以使用ifconfig brname查看),之所以会产生一个虚拟网卡,是为了实现接下来的网桥(交换机)功能,有了这个交换机以后,还需要为这个交换机增加端口(port),一...

2018-08-13 14:49:03 2231

原创 linux路由表的查看和含义

1.关于路由表的一个例子解析查看命令:netstat -rn 先执行带-r选项的netstat命令,列出路由表,然后以-n选项再次执行该命令,以数字格式打印出ip地址(我们这样做是因为路由表中的一些表项是网络地址,而不是主机地址。如果没有- n选项,netstat命令将搜索文件/etc/networks并列出其中的网络名.。这样会与另一种形式的名字—网络名加主机名相混淆)。查看结果...

2018-08-11 16:19:31 39229

qemu-3.1.1.tar.xz

原链接下载太慢,转移到此处供大家下载 链接:https://www.qemu.org/download/

2019-09-08

SI4完整安装及破解文件.zip

4.0安装破解版本,大家可以试试,里面有说明,首先读readme。

2019-09-08

linux-4.0.tar.gz

github下载源码实在太慢 源地址:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/tags

2019-09-08

linux-3.10.tar.gz

github下载源码实在太慢 源地址:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/tags

2019-09-08

kvm实战与原理解析(任永杰)

《KVM虚拟化技术:实战与原理解析》是2013年机械工业出版社出版的图书,作者是任永杰、单海涛。本书不仅系统介绍了KVM虚拟机的功能、特性和使用方法,而且还深入地剖析了KVM虚拟机的核心技术和工作原理,对KVM做了全面而透彻的讲解。

2019-04-16

linux内核源码剖析-TCPIP实现上下册合集-樊东东著(高清版)

本书完整而详细的论述了Linux内核2.6.20版本中TCP/IP协议是如何实现的。书中给出了大量的源代码,通过对源代码的详细的论述,帮助你掌握TCP/IP的实现。本书根据协议栈层次,从驱动层逐步论述到传输层,包括驱动的实现、接口层的输入输出、IP层的输入输出以及IP选项的处理、邻居子系统、路由、套接口及传输层等内容,全书基本涵盖了网络体系架构全部的知识点。特别是TCP,包括TCP连接的建立和终止、输入与输出、以及拥塞控制的实现。 本书的适用于那些熟悉Linux的基本使用方法,对Linux内核工作原理以及网络知识有一定的了解,而又极想更深入地理解各个机制在Linux中是怎样来实现的人们,包括应用程序员和嵌入式程序员等。也适合那些做相关研究和开发的科研人员在通篇阅读本书之外,当工作中遇到问题时查阅本书来帮助理解相关内核部分是怎样实现的。此外对于计算机相关专业的本科高年级学生和研究生,在学习相关课程(如操作系统、计算机网络等)时,作为辅助教程,与理论相结合以便于更好得理解相应的知识点。对于初学者,可能会在阅读中遇到诸多的障碍,本书中会尽量对一些基本知识点加以简单的描述,但限于篇幅,不可能在这上面作过多的逗留,读者可以查阅相关的资料。

2018-10-16

isic依赖库libnet

libnet是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet的开发目的是:建立一个简单统一的网络编程接口以屏蔽不同操作系统底层网络编程的差别,使得程序员将精力集中在解决关键问题上。

2018-09-30

协议栈稳定性测试工具

软件安装后有tcpsic、esic、icmpsic、udpsic和isic5种操作命令。所以各种命令操作主要是发送该类型的报文为主,比如isic,主要是各种ip报文,可以选择各种ip报文字段中的内容的比例,例如IP协议版本、选项字段等。注意所有发送报文的速率跟网卡有关,我们不能控制发送报文的速率,但是可以控制每秒发送报文的个数来控制发送的流量

2018-09-30

Go编程基础

Go编程基础-课堂讲义 后面还有讲义的源代码资源哦,记得一起下载

2017-10-13

go编程基础 讲义涉及源代码

go编程基础讲义中涉及源代码,带你更好的掌握go语言的学习

2017-10-13

go编程基础 讲义

go编程基础 讲义,入门go语言的良心书籍,由浅入深的好学习资料

2017-10-13

dpdk17.08源码

dpdk 源码 代码,代码版本17.08,强大的dpdk工具用户态代码

2017-10-13

和廖老师学python

和廖老师学python ,讲解通俗易懂,轻松学python的不二之选

2017-10-13

Gvim带配置文件

vim gvim 带配置文件 有颜色 带有破解安装文件和说明。

2017-10-13

go开发环境liteIDE

go开发环境liteIDE

2017-10-13

存储技术原理分析:基于Linux 2.6内核源代码

存储技术原理分析:基于Linux 2.6内核源代码

2017-10-13

TCP/IP详解 1/2/3卷

tcp/ip详解 1/2/3卷 中文版

2017-08-26

空空如也

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

TA关注的人

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