自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

choumin的专栏

记录一些小点

  • 博客(333)
  • 收藏
  • 关注

原创 MALLOC_PERTURB_ 环境变量

MALLOC_PERTURB_ 环境变量的用途及用法。

2022-10-11 19:08:53 267

原创 shell 中 “Here-Documents“ 的基本用法

下面讲述一下 shell 中 "Here-Documents" 的基本用法

2022-10-09 10:07:22 262

原创 使用 git am 应用来自邮箱的补丁

使用 git am 应用来自邮箱的补丁

2022-10-06 21:56:01 221

原创 内核编译时出现 ERROR: modpost: “some_function” [xxx.ko] undefined!

遇到该问题时,需要确认模块中引用的符号是否被 export 出来了。

2022-09-28 18:14:15 14587 2

原创 vpp 编译时出现 ‘libtool: error: unsupported hardcode properties‘

这种偶发且奇怪的小问题值得记录,以免后人踩坑。

2022-09-28 14:34:35 749

原创 isa-l 中 ec_init_tables() 的用途

关注到这个问题的同学,想必对 ec_encode_data() 的原理已经了解的差不多了。如果感觉还有欠缺,可以参考下面两篇论文和一篇博客。

2022-09-16 21:36:56 537

原创 isa-l 中硬件优化函数的调用路径

下面以 isa-l 中 ec_encode_data() 函数为例,弄清楚该函数对应的硬件优化版本的调用路径。主要涉及两个重要的步骤:接口定义、函数选择。之所以要进行函数选择,是因为不同的 CPU feature 对应了不同的实现,具体来说就是,根据 CPU 是否支持 SSE4.2、AVX2、AVX512 等 feature,选择不同的硬件指令实现。

2022-09-05 15:44:56 719

原创 mac 上配置 git send-email

周末在家,因工作需要给社区发邮件,但在配置 git send-email 时遇到了很多问题,折腾了两个半小时才搞定,值得记录一下。在公司内网给社区发邮件时,只需要在所用的 Linux 服务器上配置好 git send-email 的相关信息,就能顺利发出去了,即使群发也可以。但回家后,由于邮件服务器的安全限制,配置好 git send-email 后还是不能发出去。...........................

2022-08-27 18:30:20 2083

原创 指针数组和数组指针的区别及基本用法

下面简单介绍一下它们之间的区别,再进行画图说明,最后给出示例代码。

2022-08-20 09:18:31 547

原创 DPDK mlx5 驱动使用报错

有报错的话,按照提示进行修改和配置,比如修改配置文件、修改安装脚本、增加命令行参数、卸载某些有冲突的软件包等等。这三种方式我都花了不少的时间尝试过,结论是直接推荐第二种,因为其他两种方式安装成功后,还是有问题,可能是组件之间的版本不匹配。调试也只能定位到外部组件的问题,但为什么产生那个问题却不知道,还是得踏踏实实的把环境配好。毫无疑问,在安装上述组件的过程中或多或少会遇到一些问题,不然也不值得写这篇博客了。架构对应的版本,如果没有,则下载一个最为相近的版本(这个问题被我遇到了)。中,该网卡对应的驱动是。..

2022-08-01 12:07:57 7161

原创 DPDK 交叉编译基本流程

下面的内容大部份摘自官方文档

2022-07-21 20:21:54 1976 1

原创 分期付款中的利率问题

式展开后,等式两端可以同时约掉贷款本金,也就是说,贷款本金与综合年利率没有关系,下面代码中假设贷款本金为100000。数学功底比较差,虽然列出式子,但不知道如何计算😦。,比商家所说年利率的高了不少,这样来看,分期付款的综合年利率其实并不低。,看着确实挺低的,但后面发现由于是分期,综合年利率其实并不低。最近贷款买了一件商品,贷款前商家说年利率只要。期,每期偿还相等的金额,即假设贷款金额是。由上面的运行结果可知,计算出的综合年利率。仔细观察上面几个式子,可以发现在。,基本原理是假设综合年利率在。......

2022-07-20 08:59:02 212

原创 QEMU 虚拟机 BIOS 更新小问题

由于他们分属于不同的开源项目,并且需要配合实现某些功能,因此不可避免的会出现版本依赖问题。虽然大多数情况下都不会有问题,但在某些场景下,如果两个不同版本的。,一个可以正常工作,另外一个不可以,则应该考虑是否是虚拟机。,如果它们之间配合有问题,则会导致虚拟机无法正常启动。平时还是需要注意一下,以防遇到这种不常见的小问题。的版本不匹配,则应该更新虚拟机。在启动虚拟机时,既需要。主程序,又需要虚拟机。...

2022-07-15 13:23:22 941

原创 虚拟机迁移报错 unable to connect to server at ‘xxx:xx’

最近遇到的小问题还不少,今天在使用 迁移虚拟机时遇到 报错:,而且奇怪的是,我将主机 上的虚拟机迁移到主机 时,一切正常,很快就迁移成功了,但我试着将那台虚拟机从主机 迁回主机 时却遇到了上面的报错。虽然报错信息提示网络路由有问题,但已经能够单向迁移了,网络连通性应该没有问题,值得怀疑的是端口访问权限的问题,于是直接将 主机的防火墙关掉,然后就能顺利迁移了。............

2022-07-14 10:17:56 826

原创 virt-manager 报错 “Failed to setup UEFI”

今天在使用 安装虚拟机时,报错:。从报错信息来看,是因为找不到虚拟机 ,于是第一时间确认了虚拟机 的路径,发现没有问题。由于该报错不是强阻断的,因此依照 的流程把后面步骤都走完了,然后立即使用 配置上了虚拟机的 参数。以为这样就可以解决问题,但还是不能正常启动虚拟机。折腾了好一会儿,未能解决,只好麻烦同事给看看。同事操作了一番后说看看 的日志,发现确实有报错,由报错内容可知,调用 时出现了问题,可能需要更新内核。如果大家遇到类似的报错,要多看看 的日志信息,具体情况具体分析。......

2022-07-13 17:36:53 1497 1

原创 linux内核中从核初始化过程

linux 内核的入口函数是每个体系结构自己定义的,假设当前架构的内核入口函数是:kernel_entry(),则下面梳理了从核的初始化过程(内核版本:4.19):在从核线程中:smpboot_thread_fn() 会循环(while(1))调用 cpuhp_thread_fun(),后者在每次被调用时都会更新当前 cpu 的 state (在 cpuhp_cpu_state 结构体中),当 state 大于 target 后,结束循环。其中 target 的值由主核设置为:CPUHP_ONLINE。

2022-07-12 17:25:11 623

原创 DPDK 源码测试时性能下降问题

本文没有原理性的东西,就我遇到的一个小问题做一下记录,供大家参考。 DPDK 的性能测试有很多种方法,我这里使用的是通过源码编译出来的 testpmd 程序。 我遇到的问题有以下几点: 上述 3 个问题让人感到很困惑。虽然硬件正常、使用方法正确,但测试结果却有问题。我也没有分析出原因,最后直接将之前构建时生成的所有文件全部删除了,然后重新构建,于是问题就解决了。从这来看,可能是之前来回在同一个目录下多次构建不同版本的 DPDK 而导致出现了问题。具体原因不好分析,如果大家在使用 DPD

2022-06-20 19:59:04 470

原创 msa.h:没有那个文件或目录

在 mips 平台上编译一些 C /C++ 项目时,可能会报下面的错误:msa.h 是与 mips 向量支持有关的头文件,貌似在 gcc 7 以后才有,因此一般的解决方法是升级 gcc,下面给出升级的方法:1)安装 devtoolset-7gcc devtoolset-7binutils2)使新的工具集生效...

2022-06-17 10:41:07 500

原创 git send-email 中 --in-reply-to 相关参数梳理

git send-email 支持大量参数,与 reply 相关的参数有好几个,刚开始看时有点不理解,仔细阅读了 git send-email --help 帮助手册后,梳理出如下内容。它们都来自于手册,但被我整理了一番,更易于理解。没有翻译成中文,因为担心翻译的不够准确,会误导大家。内容不多,英文理解起来也不难,多看两遍就掌握了。.........

2022-06-07 19:06:34 2287 1

原创 使用filterdiff从patch文件中提取特定文件的变更

1)filterdiff 程序在 patchutils包中,可以使用 yum install patchutils或 apt install patchutils进行安装,使用效果如下所示:$ filterdiff -i "*/common/Makefile" 0001-vdpa-mlx5-introduce-Mellanox-vDPA-driver.patch diff --git a/drivers/common/Makefile b/drivers/common/Makefileindex 47

2022-04-28 11:28:51 427

原创 使用git查看patch文件的统计信息

1)使用 git apply --stat可以查看一个 patch 文件的统计信息,如下所示:$ git apply --stat 0001-vdpa-mlx5-introduce-Mellanox-vDPA-driver.patch MAINTAINERS | 7 + config/common_base | 5 doc/guides/rel_notes

2022-04-28 08:52:34 2701

原创 在Linux中使用notify-send发送定期提醒

  在 Linux 中可以使用 notify-send 命令发送桌面消息,再加上 crontab 就可以实现定时发送。但为了能够发送定制化的复杂消息,可以自己写脚本实现定时。下面的代码中使用 flock 防止脚本被多次执行。值得注意的是,在脚本中执行 notify-send 命令时,需要设置 DISPLAY 环境变量,即:DISPLAY=:0.0。代码如下所示:#!/bin/bashsleep_time=5tip_inter=2400lock_file=/tmp/.havearest.lock

2022-04-27 21:26:51 2633

原创 dpdk中内存channel和rank对mbuf大小的影响

免责声明:下面给出的逻辑推导,我无法保证完全正确,欢迎大家提意见。  用过 dpdk 的同学都知道,在 EAL 参数项中有两个参数 -n 和 -r,分别用于指定内存 channel 数和 rank 数,这两个参数会影响 mbuf 的大小,dpdk 会根据这两个参数的值和用户指定的 mbuf 大小来确定一个更优的 mbuf 大小。具体涉及的代码在 mempool 创建过程中所调用的 rte_mempool_calc_obj_size() 函数中,该函数用于计算 mempool 中每个元素的大小,在大多数情况

2022-04-25 21:22:05 1246

原创 C语言结构体赋值的小问题

假设有下面这样一个结构体:struct T { int x; int y;};则,struct T a = {1, 2}; 和 struct T b = a;,这两种结构体赋值的方式都是可行的,但 ​struct T c; c = {1, 2};这种结构体赋值方式是会报错的。stack overflow 上说 {1, 2}不是一个表达式,因为在 C 语言中,表达式是有类型的,而编译器无法确定 {1, 2}的类型,它可以是struct T类型,也可以是int[2]类型。当然,有其他方

2022-04-23 21:25:11 821

原创 ifconfig如何获得网卡的统计信息

1)ifconfig 是通过解析 /proc/net/dev 文件来获得网卡的统计信息的,如下所示:$ cat /proc/net/devInter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo ...

2022-04-19 18:15:20 1768

原创 ethtool查看网卡统计信息的流程

使用 ethtool 工具可以查看网卡硬件的统计信息,比如,收包数、发包数、单播数、多播数等等。具体操作如下:$ ethtool -S enp0s3f0NIC statistics: mmc_tx_octetcount_gb: 224841119 mmc_tx_framecount_gb: 1295134 mmc_tx_broadcastframe_g: 72032 mmc_tx_multicastframe_g: 448 mmc_t...

2022-04-19 15:34:38 4721

原创 最优充值方案?

看题目,大伙是不是觉得我要写道算法题的题解,然而不是,这是我实际遇到的一个问题,觉得比较有趣,想记录一下。题目加了一个问号,是因为下面给出的代码,我无法保证百分之百正确,欢迎大家拍砖。问题描述:随着知识付费的兴起,我也像大家一样在网上购买自己感兴趣的各种课程,但我发现在某些平台购买课程时,需要先充值,购买虚拟货币,然后用虚拟货币去买课,而且虚拟货币充值时只能选择设定好的几种面额,比如 12、68、128、188、288 等。问题来了,假设我现在选好了 3 门课,总价大概是 ...

2022-04-11 20:49:09 457

原创 python __import__ 使用问题

今天在调试某开源项目时遇到一个比较费解的问题,python 代码中通过 __import__() 来动态导入一个模块,模块对应的文件名是:TestSuite_pmd.py,里面的内容大致如下:import utilsimport reimport timeimport osfrom test_case import TestCasefrom time import sleepfrom settings import HEADER_SIZEfrom pmd_output import P

2022-03-08 21:12:02 735

原创 使用pxssh执行远端机器上的程序

有时候,我们需要让远端服务器执行某些命令,使用基于 Tcl 和 Expect 的 shell 脚本可以实现,但如果对 tcl 和 expect 语法不太熟悉,那么写起来就比较麻烦。在 python 中,可以通过 pxssh 库来实现这个功能,代码简单,使用方便,如下所示:from pexpect import pxsshimport getpasstry: s = pxssh.pxssh() hostname = raw_input('hostname: ') userna

2022-03-07 21:00:51 301

原创 QOM中类和对象的关系

今天还是记录一个小点。最近在看 QOM 的原理,发现如果一开始就能把 QOM 中类和对象的关系搞明白,那么理解它的原理就会简单一些。下面谈谈我个人的认识。首先,QOM 的全称是 QEMU Object Model,是 QEMU 中模拟面向对象的一种机制,也可以称为一种规范。我们需要理解这种规范,然后才能借助 QOM 机制实现面向对象的设备模拟。由于 QEMU 需要模拟很多设备,这些设备之间既存在共性又存在差异,因此为了描述它们之间的关系,使用面向对象的方法是比较合适的,比如...

2022-01-28 16:58:51 1556

原创 vpp-devel与dpdk-devel安装冲突

最近在对 vpp-18.07 进行打包安装测试时发现,如果机器上已经安装了 dpdk-devel,那么 vpp-devel 将无法安装,报错信息是:错误:事物测试失败: file /usr/include/dpdk from install of dpdk-devel-20.11-3.el8.x86_64 conflicts with file from package导致冲突的原因是:vpp-devel 和 dpdk-devel 都会往 /usr/inclu...

2022-01-20 16:24:01 208

原创 mmap()报Invalid argument的错误

最近在跑 vpp 单元测试时,发现某测试用例报 mmap(): Invalid argument 的错误,经过定位发现是在下面这个函数中调用 mmap() 时报错了:clib_error_t *clib_mem_vm_ext_map (clib_mem_vm_map_t * a){ int mmap_flags = MAP_SHARED; void *addr; if (a->requested_va) mmap_flags |= MAP_FI...

2022-01-17 14:32:42 4077

原创 快速判断一个正整数是否是2的幂

之前已经有人写过类似的解决方法了,引用比较多的是:(x - 1) & x == 0。这个方法比较直观,基本思路是:如果 x 是 2 的幂,那么它的二进制一定是由 1 个 1 和若干个 0 组成,那么(x - 1)是由 x 低位的所有 0 取反而来,因此 (x - 1) & x 等于 0。除了上述方法,还可以用下面的方法来判断:(x & -x) == x思路和上面的基本一样,其中 (x & -x) 是 x ...

2022-01-08 14:22:43 801

原创 Makefile.am生成Makefile的基本过程

在编译开源项目时,经常遇到以下文件:Makefile.am、Makefile.in、configure.ac、configure 等等,一直不太清楚他们之间的关系,当要修改某些配置项时,不知道应该对哪个文件进行操作,今天大概了解了一下,下面梳理一下 Makefile.am 生成 Makefile 的基本过程:其中,后缀 *.am 指的是:automake,后缀 *.ac 指的是:autoconf,后缀 *.in 指的是:input...

2021-12-23 19:10:06 2984

原创 vpp自动化测试报错调试

1)vpp 自动化测试方法在源码目录下,执行 make test 命令可进行自动化测试,并可通过 make test-help 来查看具体的参数信息。2)如果在执行 make test 时,vpp 报错,或者 vpp 出现 crash,导致 python 侧出现 IO 超时,比如:...Starting ACL create/delete test ...--------------------------------------------------------------...

2021-12-23 17:20:33 1203

原创 vpp打包时保留debug信息

最近在对 vpp 打包时,发现不同的打包方式生成的 rpm 包文件不同,具体来说,是使用了两个内容非常相近的 spec 文件,一个是CentOS-8 的 vpp.src.rpm 包自带的 spec 文件,另外一个是vpp 源码自带的 spec 文件。使用 CentOS-8 的 spec 文件进行 rpmbuild -ba 打包后,生成的 vpp 可执行文件中是包含了 debug 信息的,而使用 vpp 源码自带的 spec 文件进行 rpmbuild -bb 打包后,生...

2021-12-17 19:10:29 575

原创 kylin系统上vpp打包的版本问题

在 kylin 系统上对 vpp 进行打包后,生成的 vpp-lib包文件名称是:vpp-lib-18.07.1-1.a.ky10.arch.rpm 这里的 18.07.1 是 spec 文件里指定的版本号,后面的 1 也是 spec 文件里指定的 release 号,但再后面的 ".a.ky10" 是什么?为什么会有这个东西,查看了 kylin 系统上spec 相关的宏,发现这个 ".a.ky10" 其实是 %{dist},在 /etc/rpm/macros....

2021-12-17 09:34:08 803

原创 在C语言中自定义调用栈

对于规模大一些的 C 语言项目,往往会存在不好查的 bug,比如某些底层函数在检查参数时遇到不符合预期的情况,但由于调用路径很多,不能有效且快速的找出完整的调用链。此时,如果能在出问题的点打印出调用链,那将会有助于快速定位问题。之前在看 mariadb 的源码时,发现里面实现了自定义的调用栈跟踪功能,下面将其中的关键代码简化出来,以供大家参考。#include <stdio.h>#include <stdlib.h>#include &lt...

2021-12-12 15:42:25 720

原创 使用pthread_key_t存储和索引线程相关数据

在 C 语言多线程编程中,我们经常会在程序的执行过程中用到一些与本线程相关的数据,如果是比较简单的应用,我们可以为每个线程创建一个类似于执行环境的结构体,比如 struct thread_context,专门用来存储与本线程相关的数据,那么在函数调用的时候,我们就需要传递这个结构体指针,或者使用全局的结构体数组来保存每个线程的执行环境,但当某个函数需要使用该结构体时,还是需要一个类似于下标这种东西去索引对应的 struct thread_context,所以,常规的方法还是无法避免传递指针或...

2021-12-12 09:55:24 347

原创 vpp打包报错记录

最近在 vpp 中构建 rpm 包时报了以下错误,vpp 版本是 18.07,有遇到相同问题的同学可以参考一下:$ make pkg-rpm....错误:This macro requires some arguments使用的命令是:make pkg-rpm。这个问题应该和操作系统的版本有关,解决方法是修改 extras/rpm/vpp.spec 文件,在 %systemd_postun 后面加上 "vpp.service" 参数,如下所示:...%...

2021-12-09 17:52:55 1095

空空如也

空空如也

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

TA关注的人

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