自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 搭建vscode阅读linux代码环境

vscode插件:vscode配置:{ "editor.padding.top": 30, "editor.fontLigatures": false, "editor.lineHeight": 30, "editor.fontSize": 16, "editor.fontFamily": "'JetBrains Mono', Hack, 'PingFang SC Regular'", "editor.cursorBlinking": "ex

2020-10-08 17:36:52 3261 1

转载 [转]Linux 技巧:让进程在后台可靠运行的几种方法

[转]Linux 技巧:让进程在后台可靠运行的几种方法转自:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题。nohup/setsid.

2020-08-26 10:38:23 243

转载 在linux系统中查看cacheline的大小

为了上cache机制在程序运行时失效,因此将数据大小设置为cacheline的大小,避免cache命中,但是有关cacheline大小的信息,一直不知道怎么获取,于是在linux中查找,发现实验室路径下的一些关键信息。在/sys/devices/system/cpu/cpu1/cache路径下,有index文件夹,者分别L1数据cache,L1指令cache,L2cache,L3cache每个文件夹下有多个cache相关信息,可以查看,比如 index0其中第一个文件夹 就是cachel

2020-08-12 17:50:12 2826

转载 向linux内核社区提交patch

大多数开发人员使用git send-email发送邮件,本文也采用这种方式,当然也可以使用其他邮箱客户端,详细要求见《Linux邮件客户端配置信息》:https://www.kernel.org/doc/html/latest/translations/zh_CN/process/email-clients.html下面是真实的patch提交过程记录。一、环境搭建使用的主机系统是ubuntu-20.04 。1.1 安装git和git-emailsudo apt-get instal

2020-08-09 12:05:49 7484 1

原创 编译部署bcc/eBPF

编译部署bcc/apt-get install clang libclang-7-dev cmakegit clone https://github.com/iovisor/bcc.gitcd bcc/mkdir -p buildcd build/export CC=clang-7export CXX=clang++-7cmake .. -DCMAKE_INSTALL_PREFIX=/usrlscpumake -j48make install验证/usr/share/bcc/too

2020-07-26 10:16:13 364

转载 Linux工具之numactl

NUMA(Non-Uniform Memory Access)字面直译为“非一致性内存访问”,对于Linux内核来说最早出现在2.6.7版本上。这种特性对于当下大内存+多CPU为潮流的X86平台来说确实会有不少的性能提升,但相反的,如果配置不当的话,也是一个很大的坑。本文就从头开始说说Linux下关于CPU NUMA特性的配置和调优。  最早Intel在Nehalem架构上实现了NUMA,取代了在此之前一直使用的FSB前端总线的架构,用以对抗AMD的HyperTransport技术。一方面这个架构的特点是

2020-07-23 14:36:52 1683

转载 在Linux上编译TCMalloc

TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是google-perftools工具中的一个,这个工具都是开源的,以源码形式发布。如果觉得自己维护一个内存分配器麻烦的话,可以考虑将TCMalloc静态库连接到你的程序中。使用的时候和glibc中的malloc调用方式一样一样的。你需要做的只是把TCMalloc的动态库或者静态库连接进你的程序中,你就可以获得一个高效,

2020-07-21 17:45:23 676

转载 转载-Mac下使用自带终端SSH功能的一个小技巧

在Mac OS的终端(terminal)中,可以使用命令ssh user@host的命令来远程连接一台服务器,但是,如果要管理的服务器太多,IP地址不能全部记住的时候怎么办?这时候我们可以为每一台服务器设置一个别名(alias),使用vi命令编辑一下~/.ssh/config这个文件(如果目录下没有这个文件,可以新建一个),接着按下面格式添加内容:# 服务器1Host 别名 HostName IP地址 Port 22 User 用户名# 服务器2Host 别名 .

2020-07-16 14:16:38 593

转载 转载-小白解惑-NUMA体系结构详解

由于OpenStack Kilo增加很多针对NUMA体系结构的增强功能,所以又重新温习了下NUMA相关的知识,简单做个笔记。1. NUMA的几个概念(Node,socket,core,thread)对于socket,core和thread会有不少文章介绍,这里简单说一下,具体参见下图:一句话总结:socket就是主板上的CPU插槽; Core就是socket里独立的一组程序执行的硬件单元,比如寄存器,计算单元等; Thread:就是超线程hyperthread的概念,逻辑的执...

2020-07-15 16:41:23 684

原创 透明巨型页和标准巨型页-1

1、巨型页的好处运行内存需求量比较大的应用,如果使用page-4k的话,会产生太多TLB-miss和pagefault的情况,严重影响性能。使用巨型页,就可以减少这些情况,提高性能,但是缺点是相比较page-4k内存会浪费的多2、巨型页的支持需要处理器和内核一同支持,实现的方式是透明巨型页(AnonHugePages)和标准巨型页(Hugetlbfs)2.1 透明巨型页(AnonHugePages)的使用:cat /sys/kernel/mm/transparent_hugepage/e

2020-07-09 17:49:50 1203

原创 Shell中的带$值是什么

$0 这个脚本/程序的执行名字$n 这个脚本/程序的第n个参数值,n=1..9$* 这个脚本/程序的所有参数,此选项参数可超过9个。$# 这个脚本/程序的参数个数$$ 这个脚本/程序的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令功能相同$@ 跟$*类似,但是可以当作数组用当 $* 和 $@

2020-07-09 15:06:40 234

原创 git命令记录

git操作记录git clone (repo)git add xxxgit status -sgit diffgit commit -mgit clean -fdxgit format-patch -2 生成最近2次提交的patch本地误删文件后如何恢复git reset HEAD xxxgit checkout xxxgit开分支,并远端添加这个分支git checkout -b xxx 本地创建一个分支并切换到这个分支git remote add xxx remote.

2020-07-09 14:36:19 124

转载 system.map文件的含义

system.map内容格式为:线性地址 类型 符号具体内容如下:00100000 A phys_startup_32c0100000 T startup_32c0100000 A _text 注:表示内核代码第一个字节的地址c01000c6 t checkCPUtypec0100147 t is486c010014e t ...

2020-04-15 10:48:14 279 1

原创 procrank工具-查看进程VSS, RSS, PSS和USS

procrank工具在Android上面做过开发的同学可能知道,Android提供一个procrank工具,可以很方便的查看各进程的内存使用情况,排序依据可以是VSS, RSS, PSS或者USS。而我们完全可以把procrank工具移植到Linux系统上来,只需下载这个repo,根据自己运行Linux的架构,交叉编译一下就可以了下载路径:https://github....

2020-04-03 17:26:55 2454

原创 linux-串口驱动-console-tty解析

熟悉的for_each_console。遍历console_drivers链表。对于存在device成员的console,调用device方法。获取tty_driver,退出遍历。之后对于该console设备的读写操作都是基于该tty_driver。全部的输入输出设备都会注冊tty_driver。所以,对于一个新实现的输入输出设备,假设想让其即作为kernel的printk输出设备。也...

2020-04-03 16:55:07 2033

转载 X86/ARM32/ARM64函数调用规则

1、ARM32函数调用约定http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf2、ARM64函数调用约定http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf3、ARM32_TH...

2020-04-03 14:31:27 941

转载 Linux驱动开发——pr_fmt的用法

Linux驱动开发——pr_fmt的用法作者:彭东林邮箱:pengdonglin137@163.com在阅读kernel代码的时候,总是看到有很多驱动都在第一行定义pr_fmt,闲来没事,分析了一下, 发现,确实挺方便的。下面记录分享一下。我们知道,在驱动中可以使用dev_dbg来输出log,在输出的log中会有一些额外的信息,如所属的device的name。而pr_fm...

2020-04-03 11:25:34 499

原创 ARM-汇编在线查询网址

http://shell-storm.org/armv8-a/ISA_v85A_A64_xml_00bet8_OPT/

2020-04-02 19:39:02 1777 2

原创 嵌入式开启initramfs

mkdir rootfscd rootfsmkdir bin dev etc lib proc sbin sys usr mnt tmp varmkdir usr/bin usr/lib usr/sbin lib/modulescd  rootfs/devmknod -m 666 console c 5 1  //一定需要手动创建,要不然切换到根文件系统,无...

2020-04-02 18:49:55 560

转载 数据对齐 posix_memalign 函数详解

数据对齐 posix_memalign 函数详解原创 wintree 最后发布于2012-04-14 22:39:50 阅读数 18890 收藏展开对齐 数据的对齐(alignment)是指数据的地址和由硬件条件决定的内存块大小之间的关系。一个变量的地址是它大小的倍数的时候,这就叫做自然对齐(naturally aligned)。例如,对于一个32bit的变量,如果它的地址...

2020-04-02 16:25:33 1197

原创 O_DIRECT使用

使用O_DIRECT的话,就必须以页为单位进行I/OO_DIRECT undeclared加宏 #define _GUN_SOURCE本文参考:http://blog.csdn.net/wallwind/article/details/7461701首先来看O_DIRECT参数适用要求:O_DIRECT Try to minimize cache effects...

2020-04-02 16:25:01 5550 1

转载 linux Coherent dma 实现

linux Coherent dma 实现原创 shenhuxi_yu 最后发布于2019-05-21 01:15:37 阅读数 285 收藏分类专栏: LINUX ARM C语言版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/shenhuxi_yu/article/details...

2020-04-02 15:43:19 944

原创 申请noncache内存

申请内存提供给用户态,nocachestatic int shm_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma){ struct tee_shm *shm = dmabuf->priv; size_t size = vma->vm_end - vma->vm_start; v...

2020-04-02 15:40:34 3617

转载 PWT、PCD描述

CPU缓存:CPU缓存是位于CPU与物理内存之间的临时存储器,它的容量比内存小的多但是交换速度(也就是读写速度)却比内存要快得多。CPU缓存可以做的很大,有几K、几十K、几百K甚至上M的也有。CPU缓存与TLB的区别:TLB:线性地址<——>物理地址CPU缓存:物理地址<——>内容具体参考白皮书关于PWT/PCD属性PWT: Page Wr...

2020-04-02 11:20:03 766

原创 ubuntu 背景颜色

ubuntu 背景颜色:RGB:44 00 30

2020-03-31 16:27:07 790

转载 linux进程、线程与cpu的亲和性(affinity)

CPU亲和性(affinity)就是进程要在某个给定的CPU上尽量长时间的运行而不被迁移到其他处理器的倾向性。linux内核进程调度器天生具有软CPU亲和性(affinity)的特性,着意味着进程通常不会在处理器之间频繁迁移。这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。Linux内核还包含一些机制,它让开发人员可以编程实现硬CPU亲和性(affinity)。着意味着应用...

2020-03-31 14:06:31 496

转载 kernel中常规内存映射区物理地址与虚拟地址转换

#ifdef CONFIG_ARM_PATCH_PHYS_VIRT/** Constants used to force the right instruction encodings and shifts* so that all we need to do is modify the 8-bit constant field.*/#define __PV_BITS_31_24 0x...

2020-03-31 11:25:13 1131

转载 Openssl及加密解密

openssl是一个条件实现了上百种算法、实现了单向加密工具等一组套件,代码量很小但是功能强大。它有三部分组成: libcrypto:通用功能的加密库,软件开发时可以直接调用 libssl:实现TLS/SSL的功能 openssl:多功能命令行工具,加密、解密、创建CA、证书、一对秘钥等 openssl enc加密解密命令:参数 说...

2020-03-31 08:51:43 3507

转载 ARM Linux 如何模拟X86 PTE中的Present Young和Dirty标志位

ARM Linux 如何模拟X86 PTE中的Present Young和Dirty标志位原创文章,转载请注明出处.转载自:Li Haifeng's Blog本文链接地址:ARMLinux 如何模拟X86 PTE中的Present Young和Dirty标志位注:本文是参考Kernel的代码并加上个人揣测,欢迎指正在X86 MMU Page table entry中,有三个标...

2020-03-30 20:01:34 1203

转载 转载-基于ARM的Ptrace

前面提到过打算研究一下基于ARM的Ptrace,并在Mobile上实现Hook. 今天程序调通了,记录如下.平台:Android 2.3.3, 具体Linux Kernel和ARM的版本大家可以自己去查目标:实现两个程序target和trace. target循环用printf打印语句,trace追踪target的系统调用并替换target的打印语句在写程序之前查资料的过程中发现...

2020-03-25 11:40:48 466

转载 译文转载-Playing with ptrace

http://www.kgdb.info/playing_with_ptrace_part_i/http://www.kgdb.info/playing_with_ptrace_part_ii/

2020-03-25 11:38:38 163

转载 转载-玩转 utrace

玩转 utraceLinux 新的调试接口 utrace 简介刘 明2010 年 5 月 27 日发布WeiboGoogle+用电子邮件发送本页面6Utrace 简介Utrace 是 Linux 内核中最新的 trace 和 debug 基础构架。正如其名称所暗示,utrace 为运行在用户态的进程提供 trace 和 debug 支持。内核本身的 trac...

2020-03-25 09:58:57 1868

原创 Playing with ptrace原文

Playing with ptrace, Part Ihttp://www.linuxjournal.com/article/6100Playing with ptrace, Part IIhttp://www.linuxjournal.com/article/6210PS:不错的文章地址https://www.linuxjournal.com/...

2020-03-25 09:57:43 158

原创 Coredump

Linux内核源码 Documentation/sysctl/kernel.txt core_pattern:core_pattern:core_pattern is used to specify a core dumpfile pattern name.. max length 128 characters; default value is "core". core_patter...

2020-03-21 15:18:53 228

原创 大神brendangregg博客

http://www.brendangregg.com/blog/

2020-03-21 15:12:19 483

原创 Sanitizer

Address Sanitizer:ASAN最早可以追溯到 LLVM 的 sanitizers项目(https://github.com/google/sanitizers),这个项目包含了AddressSanitizer,MemorySanitizer,ThreadSanitizer 和 LeakSanitizer等工具。这些工具可以检测用户空间的内存问题。通过在编译时加入指定的选项,就可以...

2020-03-21 14:59:54 1078

原创 GDB调试相关

GDB调试相关配置gdb -args ./sonia a b c 或 set args a b c 或者 run a b c 设置启动参数set height 0 或 set pagination off 的命令,当输出多信息时,不会暂停set print elements number-of-elements 设置打印大数组最大限制数,设置为0表示不限制全打印set print ar...

2020-03-21 11:45:46 224

原创 GDBServer调试环境搭建和使用

GDBServer调试环境搭建和使用设备上挂载 mount -t nfs -o nolock -o tcp 10.34.4.176:/c/share /home将交叉编译得到的gdbserver放到共享文件夹share./gdbserver xx.xx.xx.xx(设备ip):1234(端口号随意设 只要不冲突) ./test (进程如有需要传参)#启动后通常会有如下打印#P...

2020-03-21 11:45:28 292

原创 工作中的工具罗列

svn git 程序版本控制QTTabBar 文件夹像网页一样打开Anaconda3 python集成Ditto 增强复制粘贴emeditor_professional 大文件打开EyeFoo3 护眼工具PyCharm 2.7.3 python IDESecureCRTPortable XshellSublime Text3 Notep...

2020-03-21 10:02:25 208

转载 uboot的常用命令及用法

uboot的常用命令及用法转自:https://blog.csdn.net/jklinux/article/details/72638830https://blog.csdn.net/dagefeijiqumeiguo/article/details/51314856uboot是bootloader的一种,主要是用于引导内核启动.uboot除此功能外, 还带有很多其它功能. ...

2020-03-20 12:15:37 221

空空如也

空空如也

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

TA关注的人

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