- 博客(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. 概述 Linux内核中各个子系统相互依赖,当其中某个子系统状态发生改变时,就必须使用一定的机制告知使用其服务的其他子系统,以便其他子系统采取相应的措施。为满足这样的需求,内核实现了事件通知链机制(notificationchain)。 ...
2018-09-30 16:25:24 428
转载 x86体系Linux内核进程切换原理(64位和32位)
首先简单提一下这个宏和函数的被调用关系:&nbsp;&nbsp;&nbsp;schedule() --&gt; context_switch() --&gt; switch_to --&gt; __switch_to()&nbsp;这里面,schedule是唯一调用switch_to的函数,涉及到一些调度算法,这里
2018-09-20 14:47:57 1190
转载 C语言汇编-函数调用栈
函数调用--函数栈 函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回结果,还有大家比较熟悉的一句话,就是函数调用是在栈上发生的,那么在计算机内部到底是如何实现的呢? 对于程序,编译器会对其分配一段内存,在逻辑上可以分为代码段,数据段,堆,栈代码段:保存程序文本,指令指针EIP就是指向代码段...
2018-09-19 19:09:10 660
转载 C语言汇编-函数调用堆栈的过程
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuoya_/article/details/80516246 本篇来分析函数调用的过程:通过下面一个简单的例子来进入话题:#include&lt;stdio.h&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
linux-4.0.tar.gz
2019-09-08
linux-3.10.tar.gz
2019-09-08
kvm实战与原理解析(任永杰)
2019-04-16
linux内核源码剖析-TCPIP实现上下册合集-樊东东著(高清版)
2018-10-16
isic依赖库libnet
2018-09-30
协议栈稳定性测试工具
2018-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人