1小时学会P4-16编程基础

本文主要讲述一些P4-16的基本元素,以及相关基础架构,旨在帮助初学者快速上手P4-16。 P4开源项目 P4项目源码可以在github上直接获取(https://github.com/p4lang)。 项目关系 项目关系如下: <

从P4 workshop 2021看P4的发展趋势

P4 概述 2013年, 当时还在德州仪器(TI)的 Pat Bosshart,联合斯坦福Nick、微软研究院的 George 等人在SIGCOMM上提出了一种RMT交换机实现,其实现了网络协议的自定义解析,自定义匹配、处理、转发,这个就是现在Intel Tofino 芯片的原型。但当时相关网络编程

P4可编程设备在工业界的落地情况

学术界对P4已进行大量的研究与应用,各个应用场景如下图所示,包括INT、QoS、拥塞控制、多播、负载均衡、加速计算、聚合、网络测量、安全、测试等领域。但是学术界的研究要真正落地,还需要考虑很多其他因素,如实可运维性、占用资源情况、多租户共享支持、异常场景处理、平滑演进等等。 考虑诸多因素,工业界使用

vim基础

Vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这些命令,您就能够很容易地将 Vim 当作一个通用编辑器来使用了。 完成本教程的内容大约需要25-30分钟,取决于您训练的时间。 注意:每一节的命令操作将会更改本

kvm虚拟机扩容

扩容 qcow2 关闭虚拟机,执行如下命令: qemu-img resize jae-dev.qcow2 +100G 进入虚拟机,进行分区 # fdisk /dev/sda 这里的/dev/sda是我们刚扩容的磁盘 Command (m for help): p 输入 Command (m fo

如何生成coredump文件

本文简述在linux中程序coredump时,如何配置生成coredump文件。 设置生成coredump文件大小 如果进程在运行期间发生奔溃,操作系统会为进程生成一个快照文件,这个文件就叫做 core dump。之后我们可以对 core dump 文件进行分析,弄清楚进程为什么会奔溃。   由于

shell 编程技巧

变量 变量取一部分 $ name="neighsyncd.service" $ echo ${name%.*} neighsyncd 内部域分隔符 IFS Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符。 从下面的例子中可以看出,如果是用冒号

redis基础

Redis 是一个高性能的 key-value 开源数据库,遵守 BSD 协议。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。主要优势如下: 性能极高: 读11万 pps,写8万 pps 丰富的数据类型:Redis支持二进制案

git 常用操作FAQs

git的一个分支 rebase master好还是merge master好? 在Git中,rebase与merge是两种将更改从一个分支整合到另一个分支的流行方法。每种方法都有其优缺点,何时使用取决于团队的工作流程、项目需求以及个人偏好。 Merge merge操作会创建一个新的"合并提交"(me

Linux性能优化流程

Linux性能优化流程 性能优化的核心是找出系统的瓶颈点,问题找到了,优化的工作也就完成了大半; 这里介绍的性能优化主要从两个层面来介绍:系统层面和程序层面; 分析系统瓶颈 系统响应变慢,首先得定位大致的问题

linux程序调试流程

GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;

wget 文件下载

wget 文件下载 Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。 wget 可以跟踪HTML页面上的链接依次下载来创建

mstat 监视内存使用情况

vmstat 监视内存使用情况 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。 vmstat的语法   vmstat [-V] [-n] [delay [count]] -V表示打印出版本信息; -n表示

top linux下的任务管理器

top linux下的任务管理器 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命

strace 跟踪进程中的系统调用

strace 跟踪进程中的系统调用 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的

size 查看程序内存映像大小

size 查看程序内存映像大小 作用:查看程序被映射到内存中的映像所占用的大小信息。 程序映射到内存中,从低地址到高地址依次为下列段: 代码段: 只读,可共享; 代码段(code segment/text segment )通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已

scp 跨机远程拷贝

scp 跨机远程拷贝 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。 Note 类似的工具

sar 找出系统瓶颈的利器

sar 找出系统瓶颈的利器 sar是System Activity Reporter(系统活动情况报告)的缩写。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小。

readelf elf文件格式分析

readelf elf文件格式分析 这个工具和objdump命令提供的功能类似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件); ELF文件类型 ELF(Executable and Linking Format)是

pstack 跟踪进程栈

pstack 跟踪进程栈 此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。请参见 proc(1) 手册页。 这个命令在排查进程问题时非常有用,比如我们发现一个服务一

ps 进程查看器

ps 进程查看器 Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。 要对进程进行监测和控制,首先必须要了解当前进程的情况,

objdump 二进制文件分析

objdump 二进制文件分析 objdump工具用来显示二进制文件的信息,就是以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 常用参数说明 -f 显示文件头信息 -D 反汇编所有section (-d反汇编特定section) -h 显示目标文件各个section的头部摘要信息 -

nm 目标文件格式分析

nm 目标文件格式分析 nm 命令显示关于指定 File 中符号的信息,文件可以是对象文件、可执行文件或对象文件库。如果文件没有包含符号信息,nm 命令报告该情况,但不把它解释为出错条件。 nm 命令缺省情况下报告十进制符号表示法下的数字值。 $nm myProgrammer 08049f28 d

lsof 一切皆文件

lsof 一切皆文件 lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一

ldd 查看程序依赖库

ldd 查看程序依赖库 ldd 作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。 示例:查看test程序运行所依赖的库: /opt/app/todeav1/test$ldd test libstdc++.so.6 => /usr/lib64/libstdc++

ipcs 查询进程间通信状态

ipcs 查询进程间通信状态 ipcs是Linux下显示进程间通信设施状态的工具。可以显示消息队列、共享内存和信号量的信息。对于程序员非常有用,普通的系统管理员一般用不到此指令。 IPC资源查询 查看系统使用的IPC资源 $ipcs --

iostat 监视I/O子系统

iostat 监视I/O子系统 iostat是I/O statistics(输入/输出统计)的缩写,用来动态监视系统的磁盘操作活动。 命令格式 iostat[参数][时间][次数] 命令功能 通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息

free 查询可用内存

free 查询可用内存 free工具用来查看系统可用内存: /opt/app/tdev1$free total used free shared buffers cached Mem: 8175320 6159

dpdk rte_mbuf详解

DPDK(数据平面开发套件)是一套用于快速处理数据包的库和驱动,广泛用于高性能和高吞吐量的网络程序设计。rte_mbuf是DPDK中一个核心的数据结构,用于表示网络数据包(mbuf 是 memory buffer 的缩写)。 rte_mbuf结构体不仅包含了数据包的内容,还包含了关于数据包的其他元数

crontab 定时任务

crontab 定时任务 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。 命令格式 crontab [-u user] file cr