原文链接:https://blog.csdn.net/dog250/article/details/46666029
零拷贝(Zero-Copy)是一个大家耳熟能详的概念,那么,具体有哪些框架会使用到零拷贝呢?在思考这个问题之前,让我们先一起探寻一下零拷贝机制的底层原理。
注意事项:除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page cache 技术。
Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。
在前两期,我们讲述了X姐利用缓存一致性原理,晋升P9并且设法避免了被老板毕业的故事,链接在此:
上回书讲到了运维小哥的调优方法论(上),对于Ceph运维人员来说最头痛的莫过于两件事:一、Ceph调优;二、Ceph运维。调优是件非常头疼的事情,下面来看看运维小哥是如何调优的。
1. 如何看当前Linux系统有几颗物理CPU和每颗CPU的核数? 物理cpu个数:cat /proc/cpuinfo |grep -c ‘physical id’ CPU一共有多少核:grep -c processor /proc/cpuinfo 将CPU的总核数除以物理CPU的个数,得到每颗CPU的核数。 2. 查看系统负载有两个常用的命令,是哪两个?这三个数值表示什么含义呢? 两个命令分别是 w 和 uptime 这三个系统负载值分别表示在1分钟、5分钟和15分钟内平均有多少个任务处于活动状
从我们用户的使用就可以感受到网速一直在提升,而网络技术的发展也从1GE/10GE/25GE/40GE/100GE的演变,从中可以得出单机的网络IO能力必须跟上时代的发展。
针对海量的网络流量,转发性能是我们最关键的一个方面,那构建高性能的后台服务器有哪些关键的技术和需要注意的地方。
原文链接:https://www.cnblogs.com/qcloud1001/p/9585724.html
DPDK最初动机很简单,网络处理器的软件解决方案,证明IA多核处理器能够支撑高性能数据包处理。 什么是DPDK?对于用户来说,它可能是一个出色的包数据处理性能加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。DPDK在主流Linux包含,比如Debian, Fedora,Redhat, Ubuntu, FreeBSD。 DPDK代码在www.dpdk.org上自由提交,软件发布时间是1年4次,分别是2017年2月、5月8月和11月。本质
针对海量的网络流量,转发性能是我们最关键的一个方面,那构建高性能的后台服务器有哪些关键的技术和需要注意的地方,今天邀请了后台开发同学童琳和郑胜利来和大家一起谈谈。 一、引言 随着互联网的高速发展,内容量的提升以及对内容智能的需求、云产业的快速突起,作为互联网的计算基石服务器的形态以及使用成为了炙手可热的话题,全球各家大型互联网公司都持续的在服务器平台上有非常大的动作,譬如facebook的OCP等,而整个服务器的生态链也得到了促进和发展。随着服务器硬件性能的提升和网络硬件的开放,传统PC机的处理性能甚者可
---------------------------------接Part 13------------------------------
本章要整理下 常见的复杂的 linux面试问题,大家收藏后,以后面试之前拿出来快速看一遍!
linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并做了分类,实例解说。
linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并做了分类,实例解说。 查看系统信息 uname -a 显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号 cpu lscpu命令,查看的是cpu的统计信息. blue@blue-pc:~$ lscpu Architecture: i686 #cpu架构 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian #小尾序 CPU(s): 4 #总共有4核 On-line CPU(s) list: 0-3 Thread(s) per core: 1 #每个cpu核,只能支持一个线程,即不支持超线程 Core(s) per socket: 4 #每个cpu,有4个核 Socket(s): 1 #总共有1一个cpu Vendor ID: GenuineIntel #cpu产商 intel CPU family: 6 Model: 42 Stepping: 7 CPU MHz: 1600.000 BogoMIPS: 5986.12 Virtualization: VT-x #支持cpu虚拟化技术 L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 6144K 查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。 #cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz ..... 上面输出的是第一个cpu部分信息,还有3个cpu信息省略了。 内存 概要查看内存情况 free -m total used free shared buffers cached Mem: 3926 3651 274 0 12 404 -/+ buffers/cache: 3235 691 Swap: 9536 31 9505 这里的单位是MB,总共的内存是3926MB。 查看内存详细使用 # cat /proc/meminfo MemTotal: 4020868 kB MemFree: 230884 kB Buffers: 7600 kB Cached: 454772 kB SwapCached: 836 kB ..... 查看内存硬件信息 dmidecode -t memory # dmidecode 2.11 SMBIOS 2.7 present. Handle 0x0008, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard .... Maximum Capacity: 32 GB .... Handle 0x000A, DMI type 17, 34 bytes .... Memory Device Array Handle: 0x0008 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 64 bits Size: 4096 MB ..... 磁盘 查看硬
NIC 在接收到数据包之后,首先需要将数据同步到内核中,这中间的桥梁是 rx ring buffer。它是由 NIC 和驱动程序共享的一片区域,事实上,rx ring buffer 存储的并不是实际的 packet 数据,而是一个描述符,这个描述符指向了它真正的存储地址,具体流程如下:
前言: 随着Linux的版本升高,存储栈的复杂度也随着增加。作者在这里简单介绍目前Linux存储栈。 分析: 1,storage stack 在用户态,可以看到的磁盘主要有几种类型: a,/dev/
Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.简单来说,Squid服务程序会按照收到的用户请求向网站源服务器请求页面,图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上.当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力.
查看linux系统内核版本 uname -a # Linux iZ8vbcsg5lal7crq11jflxziz23yZ 4.18.0-193.14.2.el8_2.x86_64 #1 SMP Sun Jul 26 03:54:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux uname -r # 4.18.0-193.14.2.el8_2.x86_64 cat /proc/version # Linux version 4.18.0-193.14.2.el8_2.x8
查看linux系统内核版本 uname -a # Linux iZ8vbcsg5lal7crq11jflxziz23yZ 4.18.0-193.14.2.el8_2.x86_64 #1 SMP Sun Jul 26 03:54:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux uname -r # 4.18.0-193.14.2.el8_2.x86_64 cat /proc/version # Linux version 4.18.0-193.14.2.el8_2.x86
声明:此文来自于MOS(Doc ID 1674865.1),整理在此以便于大家阅读学习。
周末宅在家里,捣鼓了一天,在本地用虚拟机搭建了 4 个 Linux 的集群环境,机器之间实现了相互访问。从此以后我的本地就有一套集群环境了,真正意义上可以模拟分布式的环境了!后面还可以模拟大型电商项目的高并发场景,美滋滋!
本章分为两节,第一节介绍数据平面开发套件DPDK(Data Plane Development Kit)的基础知识,第二节介绍DPDK盒子的使用方法。 一、DPDK简介 本节首先介绍DPDK出现的行业背景,然后介绍DPDK概述、DPDK关键技术、DPDK开源代码,最后介绍DPDK Lib库。 1.1 DPDK背景 在过去10年里,以太网接口技术也经历了飞速发展。从早期主流的10Mbit/s与100Mbit/s,发展到千兆网(1Gbit/s)。到如今,万兆(10Gbit/s)网卡技术成为数据中心服务器的主流
互联网、Linux内核书籍上充满了各种关于Linux DMA ZONE和dma_alloc_coherent、dma_map_single等的各种讲解,由于很多童鞋缺乏自身独立的思考,人云亦云,对这些概念形成了很多错误的理解。本文的目的在于彻底澄清这些误解。
1、virtual box 官网下载最新 (opens new window)(本次笔记使用的是 VirtualBox-6.0.4-128413-Win.exe),安装完成之后,需要先配置下虚拟电脑的默认位置:管理 -> 全局设定 -> 虚拟电脑位置
目录 Linux 目录结构及详细操作 目录结构 目录结构的特点 目录结构挂载 目录结构发展 关闭selinux(了解) 重要目录说明(etc目录说明) 1、网卡配置文件 2、解析配置文件 3、主机名称文件 4、解析映射文件 5、磁盘挂载文件 6、开机加载脚本 7、系统启动级别 8、变量加载文件(环境变量) 9、登录提示文件 重要目录说明(/usr目录说明) 重要目录说明(/var目录说明) 重要目录说明(/proc目录说明) 补充知识: 📷 Linux 目录结构及详细操作 目录结构 常见的目录结构
环境:Linux服务器一台(双网卡) 内网IP:192.168.80.101 设置为vmnet1 外网IP:192.168.90.101 设置为vmnet2 Linux客户端一台,IP地址:192.168.80.102 设置为vmnet1 Win7客户端一台,IP地址:192.168.90.10 设置为vmnet2
在工作中多使用docker、kubernetes等开源工具。工作中基本都是基于Linux系统进行操作的。记录一下工作中常用到的Linux命令,每个命令搭配一定的参数使用会更加方便。这里只记录常用到的命令以及参数
云计算介绍 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池,(资源包括网络、服务器、存储、应用软件、服务),这些资源能够被快速提供,需要投入很少的管理工作,或与服务供应商进行很少的交互。 1)云计算之前的使用模式 IDC 托管 IDC 租用 虚拟主机(买空间) VPS:虚拟专用主机 2)传统数据中心面临的问题 资源使用率低 资源分配不均 自动化能力差 3)云计算的优势 云计算是一种使用模式,不是一种技术 云计算的使用方式:通过网络访问 云计算的优势:弹
前言:主要针对于Linux中网络/路由/通信通道类命令进行学习,加深对Linux的使用;
今天安装了9台Linux服务器,型号完全不一样(有DELL、HP和IBM服务器),又懒得去对清单,如何在Linux下cpu的个数和核数呢?另外,nginx的cpu工作模式也需要确切的知道linux服务器到底有多少个逻辑cpu,不过现在服务器那是相当的彪悍,直接上worker_processes 8吧。
相对传统的基于内核的网络数据处理,dpdk 对从内核层到用户层的网络数据流程进行了重大突破,我们先看看传统的数据流程和 dpdk 中的网络流程有什么不同。
tc(Traffic Control) 是linux系统中常用的来控制传输速率、模拟网络延时丢包等场景的工具,tc命令有三个主要的概念,是qdisc、class和filter,qdisc又分为classless qdisc和classful qdisc,在控制传输速度的方面大致有两种用法
: 我需要在我的Ubuntu主机上建立一个Linux网桥,共享一个网卡给其他一些虚拟主机或在主机上创建的容器。我目前正在Ubuntu上使用网络管理器(Network Manager),所以最好>能使用网络管理器来配置一个网桥。我该怎么做?
描述:Kail 是基于Debian的Linux发行版它的前身是BackTrack并且由Offensive Security Ltd维护和资助,设计用于渗透测试与取证的系统,系统里面集成了超过300个渗透测试工具复,受到广大的网络安全从业者与爱好者的追捧;
在用户态空间,调用发送数据接口 send/sento/wirte 等写数据包,在内核空间会根据不同的协议走不同的流程。以TCP为例,TCP是一种流协议,内核只是将数据包追加到套接字的发送队列中,真正发送数据的时刻,则是由TCP协议来控制的。TCP协议处理完成之后会交给IP协议继续处理,最后会调用网卡的发送函数,将数据包发送到网卡。
1. rx-checksumming:校验接收报文的checksum。
下面以最常用的 read() 和 write() 函数来介绍 Linux 的 I/O 处理流程。
以前基于DPDK做NFV,转发程序跑在虚拟机中,先把硬件网卡passthrough给虚拟机,然后在虚拟机中把网卡绑定内核模块igb_uio,问题是igb_uio的代码没有upstream,依赖于内核版本,提前编译好的内核模块换个版本就不能运行,就想着用vfio-pci,这家伙早早upsteam,一般linux发行版本内核都自带,且不省事,理想是丰满的,现实是骨感的。
监控io性能 : 有时候发现系统cpu和内存均有剩余,但是负载却很高,使用vmstat发现b列和wa列负载很高,要是想更详细的查看磁盘状态,那我们就用到了今天所讲的iostat。 yum install -y sysstat #iostat //直接查看磁盘的现状 #iostat 1 10 //和vmstat一样的功能 KB_read/s 读硬盘的速度 KB_wrtn/s 写硬盘的速度 #iostat x 1 (每隔一秒就会展现一次磁盘的IO状态) 我们重点关注的是 %util:如果长期大于50%代表着你的
Linux处理Packets主逻辑 系统接受数据包的过程 当网卡收到第一个包时候,通过DMA把这个包发送给接受队列(rx) 系统通过中断的方式通知新数据包的到来,同时也需要把数据包传递给内核的buffer(每个包一个buffer,sk_buff struct).一个数据包到来会触发多次的中断,内核处理完毕后,数据包再次传输到用户态空间 瓶颈分析 内核在处理很多包的时候,会消耗非常多的资源,同时也会触发很多次中断,这会严重影响系统处理数据包的性能 内核的sk_buff的设计是为了内核协议栈兼容多个协议。因此所
从树莓派底层玩家的角度上来看,树莓派4算的上一款比较好的开发板。在树莓派4之前,有线网卡的驱动都是接在USB设备上,也就是说之前的树莓派都是必须启用了USB协议,然后再开启网卡,这样网速的差别以及网络处理效率上的差别也就不敢恭维了。博通bcm的网卡芯片还是不错的,这次为树莓派4适配和千兆以太网口,配上树莓派4的a72的4核的芯片,真的算是非常的良心的开发板了。学习网络编程,除了熟悉各种TCP,UDP的协议之外,如果能够了解底层驱动的工作原理,那也算是锦上添花的事情。本文主要针对树莓派4有线网卡的驱动模型,以及数据收发的方式,进行梳理总结,同时学习一些比较好的网卡设计模式。
DPDK与SR-IOV两者目前主要用于提高IDC(数据中心)中的网络数据包的加速。但是在NFV(网络功能虚拟化)场景下DPDK与SR-IOV各自的使用场景是怎样的?以及各自的优缺点?
• Inactive = Inactive(anon) + Inactive(file)
网络层(network layer)是实现互联网的最重要的一层。正是在网络层面上,各个局域网根据IP协议相互连接,最终构成覆盖全球的Internet。更高层的协议,无论是TCP还是UDP,必须通过网络层的IP数据包(datagram)来传递信息。操作系统也会提供该层的socket,从而允许用户直接操作IP包。 IP数据包是符合IP协议的信息(也就是0/1序列),我们后面简称IP数据包为IP包。IP包分为头部(header)和数据(Data)两部分。数据部分是要传送的信息,头部是为了能够实现传输而附加的信息(
领取专属 10元无门槛券
手把手带您无忧上云