首页 > 系统相关 >linux 性能自我学习 ———— 软中断 [五]

linux 性能自我学习 ———— 软中断 [五]

时间:2023-06-03 10:55:10浏览次数:30  
标签:hping3 中断 自我 网卡 内核 && linux hping

前言

linux 性能的自我学习。

正文

什么是软中断呢?

举一个网络的例子。

linux 将中断处理过程分为两个阶段:

上半部用来快速处理中断,他在中断禁止模式下运行,注意是处理跟硬件紧密相关或时间敏感的工作。

下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。

比如网卡接收到数据包后,会通过硬件中断的方式通知内核有新的数据到了。这时候,内核就应该调用中断处理程序来响应它。

对于上半部分来说,就是快速处理,把网卡的数据读取到内存中,然后更新硬件寄存器的状态,最后发一个软中断信号,通知下半部分进一步处理。

下半部分被软中断唤醒后,需要从内存中找到网络数据,再按照协议栈,对数据进行逐层解析和处理,直到把它送到了应用程序。

实际上,上半部分会打断cpu正在执行的任务,然后立即执行中断处理程序。下半部分以内核线程的方式执行,并且每个cpu都对应一个软中断内核线程,名字为: ksoftirqd/cpu 编号

软中断不仅仅是硬中断的下部分,一些内核自定义时间也是软中断,比如内核调度和rcu锁。

怎么查看软中断呢?

这里有10个不同的中断类型。

下面开始实验。

实验

需要用到的工具是:

docker sysstat sar hping3 tcpdump 等工具。

  1. sar 是一个系统活动报告工具,既可以实时查看系统当前的活动,又可以配置保存和报告历史数据。

  2. hping3 是一个可以构造tcp/ip 协议数据包的工具,可以对系统进行安全审计、防火墙测试等。

  3. tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。

hping3 在centos 安装方式:

创建本地安装目录
 mkdir -p /usr/local/hping && cd /usr/local/hping 
下载并解压
 wget https://github.com/antirez/hping/archive/master.zip && unzip master.zip && cd hping-master 
安装依赖包
 yum install -y libpcap-devel yum install -y gcc gcc-c++ yum install -y tcl tcl-devel 
设置软连接
 ln -sf /usr/include/pcap-bpf.h /usr/include/net/bpf.h 
进行安装
 ./configure && make strip && make install 
测试查询版本
 hping3 -v 

然后执行:

hping3 -S -p 80 -i u100 192.168.62.136

这个时候你就发现变慢了:

 curl http://192.168.62.136:5555

变慢一般查看cpu:

看起来似乎正常。

查看软中断:

watch -d cat /proc/softirqs

分析网卡情况:

sar -n DEV 1

第一列:表示报告时间

第二列: iface 表示网卡

第三四列: rxpck/s 和 txpck/s 分别表示每秒接收、发送的网络帧数,也就是pps

第五、六列: rxkb/s 和 txkb/s 表示每秒接收、发送的字节数,也就是bps。

这里就看到一个问题:

比如说接收了12690.54 包,但是txkB/s 只有669.21k。

还有一个是接收了6550.00,发送是12690.54,如果是tcp的话,那么应该是收发个数差不多,因为tcp的确认机制。

然后可以说,接收的都是小包。

然后就可以通过tcpdump 来确定是什么问题,可以抓取到很多s包,确定是syn flood 攻击。

下一节快速定位问题的手段

标签:hping3,中断,自我,网卡,内核,&&,linux,hping
From: https://www.cnblogs.com/aoximin/p/17450503.html

相关文章

  • 国产化麒麟linux系统QtCreator和QtCreator编译的程序无法输入中文libfcitx最新版本编
    1.问题描述麒麟linux系统QtCreator和QtCreator编译的程序无法输入中文,网上找了很多的libfcitxplatforminputcontextplugin.so库都无法使用正常输入;Qt版本:5.9.6麒麟系统版本:海光麒麟桌面版kylin V10 SP1  小版本号2203XC-P923P_KOS_2203_AMD_HG_3250_220630_AUDIT_ACTIVE.i......
  • linux卸载MySQL
    linux卸载MySQL一查找以前是否装有mysqlrpm-qa|grep-imysql显示之前安装了:MySQL-server-5.6.22-1.el6.i686MySQL-client-5.6.22-1.el6.i686二停止mysql服务、删除之前安装的mysql删除命令:rpm-e–nodeps包名rpm-evMySQL-server-5.6.22-1.el6.i686rpm-evMySQL-cli......
  • Linux安装java(jdk8)
    1.查看Linux系统是否有自带的jdk:1、输入:java-version如果有输出版本信息,则需要卸载原本的jdk,如果没有说明linux系统没有安装jdk可以跳过下面步骤直接进行下一步的安装。2、发现有版本信息输入:rpm-qa|grepjava检测jdk的安装包,(注意:rpm符没有时记得下载一个输入:apt-getins......
  • linux安装图形化文本编辑gedit
    服务器基于CentOSsu切换root用户,或者使用sudo命令sudoyum-yinstallgedit 安装完成  常用命令类似Windows:CTRL-Z:撤销CTRL-C:复制CTRL-V:粘贴CTRL-T:缩进CTRL-Q:退出CTRL-S:保存CTRL—R:替换CTRL+Tab切换CTRL+W关闭选项卡 ......
  • 网安--Linux文本编辑
    1、vi与vim的区别vim是vi的进阶版,vim兼容vi2、vim配置文件/etc/vimrc3、vim的三种模式区别命令模式vim文件名移动光标文件跳到行首               HOME跳到行尾                  END向后前进几行              ......
  • 2023.6.2linux系统文件查找
    03.Linux系统⽂件查找⽂件查找概述find名称查找find⼤⼩查找find时间查找find⽤户查找find类型查找find权限查找find处理动作Authorvx:WingspanGo⽂件查找概述Linux系统中的find命令在查找⽂件时⾮常有⽤⽽且⽅便。它可以根据不同的条件来进⾏查找⽂件:例如⽂件......
  • Linux 主机名被修改成bogon问题的几种解决办法
        当Linux主机名由@myhostname变成了@bogon了之后,访问网络就会出现问题,重启后也没有解决。网上搜索N久之后,发现了如下几种解决方式,特此记录一下。 1、在linux下添加一个127.0.0.2名叫bogon的主机此方法使用后,bogon主机名得以解析,使用的主机名仍为bogon,但进入linux已不......
  • Linux 下安装JDK1.8-解压版
    一、安装环境操作系统:RedHatEnterpriseLinux664位(版本号6.6)JDK版本:1.8工具:Xshell5、Xftp5说明:本文是通过Xshell5工具远程连接Linux操作,如果是直接在Linux可视化界面操作那就更方便了,原理一样。二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装......
  • archlinux安装xxx.pkg.tar.zst包
    archlinux提供了丰富的第三方包,一般安装都比较简单,直接运行pacman、yay、paru之类的安装包管理器。但有部分软件没有进入AUR或AUR上的软件太旧,但官方提供了xxx.pkg.tar.zst安装包。如kangaroo是一款不错的数据库管理软件,官方之提供了.pkg.tar.zst安装包。sudopacman-Ukangaroo......
  • linux 性能自我学习 ———— 不可中断进程和僵尸进程 [四]
    前言简单介绍一下不可中断进程和僵尸进程。正文先来看下进程的状态:那么这一列的状态是什么呢?R是Running或Runnable的缩写,表示进程在cpu的就绪队列中,正在运行或者正在等待运行。D是disksleep的缩写,也就是不可中断睡眠,一般表示进程正在跟硬件交互,并且交互过程不允......