linux
文章平均质量分 65
高铭杰
反思总结常态化,华为高斯PG->阿里PG->腾讯PG
展开
-
iperf3使用记录
iperf3使用记录原创 2024-04-08 18:27:51 · 228 阅读 · 0 评论 -
真正看懂TOP的进程内存(VIRT、RES、SHR)
私有内存与共享内存实验,看懂TOP的进程内存结果原创 2023-12-19 23:45:00 · 2330 阅读 · 0 评论 -
asan内存检测工具实例
内存错误检测工具ASAN用法总结原创 2023-08-15 23:45:00 · 1141 阅读 · 0 评论 -
如何知道程序需要什么版本的libc/libstdc++
C++的版本管理简单粗暴,像libc这种基础库如果需要多版本,用起来非常不方便,但c/c++基础库都是向下兼容的,最好的方式就是用一套比较新的系统,带着新的libc,再安装一套和系统版本同年代的新一点的gcc编译器即可,可满足大部分的使用场景,避免一套环境上折腾多套libc、libstdc++,经验之谈:非常麻烦性价比很低。原创 2023-07-22 15:12:53 · 1301 阅读 · 0 评论 -
内存避障的前世今生
引入storebuffer,写入不再直接写入L1,而是写入stroebuffer(相当于L1的缓存),写入后不在同步等待,而是直接继续执行下一条指令。由stroebuffer发送"I"到其他核心。其他核心收到"I"后,也不会立即失效cacheline,而是将"I"放入失效队列,异步处理。写动作就变成全异步了,同时也会发生数据不一致的问题(现在是最终一致性,处理完stroebuffer、invalid queue才最终一致)。原创 2023-03-20 11:43:13 · 520 阅读 · 1 评论 -
内存避障:一个内存乱序实例
借鉴网上的一个例子,分析一下到底什么是memory reordering内存乱序。原创 2023-03-16 21:30:00 · 529 阅读 · 0 评论 -
Linux共享内存与子进程继承
- IPC的共享内存使用分为三步: - 申请:shm_id申请共享内存段,申请后可以使用ipcs -m查询 - 关联:shmat将共享内存映射到自己的内存空间中 - 解除关联:shmdt将共享内存映射删除 - 释放:shmctl IPC_RMID删除共享内存段- IPC申请的共享内存关联后可以拿到映射地址,映射地址子进程可以直接使用。原创 2022-11-24 16:53:19 · 586 阅读 · 1 评论 -
Linux内存映射函数mmap与匿名内存块
memory-mapped io可以将文件映射到内存中的buffer,当我们从buffer读写数据时,其实操作的是对应文件中的数据。这样可以达到不使用READ/WRITE的IO操作。mmap也可以直接映射匿名内存块,无需提供文件fd,直接申请一块内存给当前进程使用,也可以选择继承给子进程。原创 2022-11-23 16:45:17 · 1228 阅读 · 0 评论 -
longjmp导致局部变量丢失
编译器在O1优化下,把sigsetjmp与siglongjmp之间的局部变量赋值操作丢掉了。- longjmp与setjmp语句之间的变量赋值会丢失。- 变量须满足: 1. 在调用setjmp函数中的局部变量(栈变量) ,全局变量不受影响 2. 非volatile解决方法:加volatile原创 2022-11-19 12:16:31 · 421 阅读 · 0 评论 -
X86如何实现函数调用?
x86下函数调用资料汇编。rsp、rbp、rip寄存器的用途分析。函数调用过程汇编分析。原创 2022-08-01 18:57:06 · 865 阅读 · 4 评论 -
遇到segfault但是没有coredump文件如何定位问题?
生产环境定位问题往往遇到各种限制,比如事后日志发现程序是收到SIGSEGV退出了(segment fault),但是因为:1. 没配置limit2. 存储空间不够了3. 其他未知原因没有正常生成core文件,那么这会如何定位问题呢?...............原创 2022-07-11 16:17:46 · 1456 阅读 · 2 评论 -
Centos8更新为阿里云源
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist报错处理原创 2022-05-24 21:19:47 · 628 阅读 · 0 评论 -
CPU中的缓存、缓存一致性、伪共享和缓存行填充
转载CPU中的缓存、缓存一致性、伪共享和缓存行填充 - 知乎CPU中的缓存、缓存一致性、伪共享和缓存行填充文章目录:1、 CPU缓存2、 总线锁和缓存锁3、 缓存行4、 缓存一致性协议(如:MESI)5、 伪共享(false sharing)问题6、 伪共享解决方案(如:缓存行填充)6.1 Disruptor为什么这么快?6.2 实验证明6.3 Jdk8中自带注解@Contended7、 总结本篇文章主要介绍CPU缓存相关的内容。 亦是上一篇文章的延伸和补充。破执:volatile底转载 2021-11-30 15:35:35 · 571 阅读 · 0 评论 -
perf事件统计常用命令
Profiling# Sample on-CPU functions for the specified command, at 99 Hertz:perf record -F 99 command# Sample on-CPU functions for the specified PID, at 99 Hertz, until Ctrl-C:perf record -F 99 -p PID# Sample on-CPU functions for the specified PID, at原创 2021-08-26 14:48:19 · 509 阅读 · 0 评论 -
superpi脚本评估计算能力
https://www.linuxidc.com/Linux/2009-06/20495.htm单核:for i in {1..10};do for cpu in {0..15}; do (time echo "scale=5000; 4*a(1)" | taskset -c 1 bc -l -q > /dev/null) >> single.res 2>&1 ; done ;donecat single.res | grep real | cut -b 8-13 |原创 2021-05-25 17:52:21 · 246 阅读 · 0 评论 -
FIO使用场景总结
https://help.aliyun.com/document_detail/147897.html以下测试命令适用于NVMe SSD本地盘和SATA HDD本地盘。注意加size=1GB随机写IOPS:fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/vdx -name=test原创 2021-05-24 14:40:19 · 944 阅读 · 0 评论 -
性能对比环境需要对齐什么?
规格硬件1 基本对齐基本的硬件规格2 CPU拓扑1、注意是否跨socket2、注意是否在同物理核上cat /sys/devices/system/cpu/cpu77/topology/thread_siblingscat /sys/devices/system/cpu/cpu0/topology/thread_siblingscat /sys/devices/system/cpu/cpu1/topology/thread_siblings结果一样就是同物理核按上..原创 2021-04-26 14:08:10 · 223 阅读 · 0 评论 -
linux安全策略对性能的影响
https://unix.stackexchange.com/questions/554908/disable-spectre-and-meltdown-mitigationsA number of kernel boot parameters are available to disable or fine-tune hardware vulnerability mitigations:for Spectre v1 and v2:nospectre_v1(x86, PowerPC),n...原创 2021-04-25 11:36:47 · 1017 阅读 · 0 评论 -
如何修改grub
centos7vi /etc/default/grubGRUB_TIMEOUT=1GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M cry.原创 2021-04-23 11:07:00 · 2529 阅读 · 0 评论 -
OS部分关键参数整理
vm.swappiness = 0默认0,表示不实用swap,改成1-100的情况表示使用swap,1表示尽量不使用,100尽量使用。不建议打开这个参数,大部分情况内存超了oom即可,swap属于温水煮青蛙。vm.max_map_count = 65530进程申请的最多虚拟内存数量,malloc、mmap等都会使用vma。(在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。)net.ipv4.tcp_rmem = 4...原创 2021-04-22 16:44:39 · 579 阅读 · 0 评论 -
Linux启动引导参数grub
内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导参数,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导参数说明。大多数参数是通过"__setup(... , ...)"函数设置的,少部分是通过"early_param(... , ...)"函数设置的,逗号前的翻译 2021-03-26 11:45:03 · 4766 阅读 · 1 评论 -
vtune准备——开启linux内核调试信息
解决报错:cannot locate debugging information for file内核需要三部分调试信息1 打开内核module解析检查/proc/sys/kernel/kptr_restrict# cat /proc/sys/kernel/kptr_restrict0If the kptr_restrict value is 0, kernel addresses are provided without limitations (recommended).If the原创 2021-03-23 10:47:46 · 707 阅读 · 1 评论 -
ELF文件分析
文章目录前言ELF headerProgram headersegment第一个segment第二个segmentSection和Segment的区别和联系Section Header寻找symtab section前言实例分析ELF文件#include <stdio.h>int main(){ printf("Hello World!\n"); return 0;}ELF header# readelf -h helloELF Heade原创 2020-12-28 22:53:39 · 291 阅读 · 0 评论 -
ELF文件格式
文章目录源码到可执行文件ELF文件格式ELF File headerProgram headerSection header工具Symbol Table源码到可执行文件linux中四类文件使用ELF文件格式normal executable filesrelocatable object filescore filesshared objects.https://man7.org/linux/man-pages/man5/elf.5.html1999年86open项目选择ELF作为原创 2020-12-28 16:34:37 · 449 阅读 · 0 评论 -
重传问题四阶段优化分享
背景使用wrk模拟http压力打nginx时,发现压测过程中持续出现重传现象,而且在高压下和低压下都会出现不同程度的重传。下面按照不同的客户端压力分析三种重传现象的根因,并给出解决方法。场景一:压测并发1会话1——TimeWait满导致FIN包乱序重传优化效果:重传0.3 --> 0复现wrk http://xxx/ -t1 -c1 -d 1 -H “Connection: Close” --latency低压压测,运行时会产生3000个短连接GET。压测重传到0.2左右,wires原创 2020-12-28 14:29:19 · 3148 阅读 · 0 评论 -
Nginx请求转发&端口转发
正向/反向代理区别正向代理:简单理解,服务端不知道客户端是谁,客户端全部请求都是通过代理发送给服务端。科学上网属于正向代理。反向代理:客户端不知道服务端是谁,代理充当中转中心的角色,一般用户负载均衡。负载均衡,nginx做转发一般都属于反向代理。nginx反向代理官网介绍:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/https://ptsv2.com/s/whatisthis.htmlhttps://pt原创 2020-06-29 14:25:17 · 6672 阅读 · 0 评论 -
pipe原理与使用总结
pipe原理使用总结PGLOG瓶颈在于pipe相关的等锁,那么什么是pipe?pipe函数定义http://man7.org/linux/man-pages/man2/pipe.2.html#include <unistd.h>/* On Alpha, IA-64, MIPS, SuperH, and SPARC/SPARC64; see NOTES */struct...原创 2020-04-03 22:51:46 · 1377 阅读 · 0 评论 -
CPU软中断概念与案例
CPU软中断概念&案例1 案例一1.1 环境部署环境1:WEB服务器docker run -itd --name=nginx -p 80:80 nginx环境2:SYN攻击curl http://xxx.xxx.xxx.xxx/<!DOCTYPE html><html><head><title>Welcome to ng...原创 2020-04-03 22:47:53 · 1513 阅读 · 0 评论 -
Cgroup测试&CFS计算方法
1 测试案例首先,Linux把CGroup这个事实现成了一个file system,你可以mount。在我的Ubuntu 14.04下,你输入以下命令你就可以看到cgroup已为你mount好了。[root@ecs]# mount -t cgroupcgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,rel...原创 2020-04-03 22:45:17 · 1046 阅读 · 1 评论 -
Linux内核Namespace隔离测试code
linux的namespace机制有点类似于数据库中的schema,可以为不同的进程提供各自的命名空间,命名空间互相隔离,进程跑在自己的namespace中资源互相隔离。原创 2019-06-12 14:33:19 · 552 阅读 · 0 评论 -
Linux挂载逻辑卷
步骤1 检查挂载磁盘df -hFilesystem Size Used Avail Use% Mounted on/dev/vda1 40G 16G 22G 42% /devtmpfs 16G 0 16G 0% /devtmpfs 16G 40K 16G 1% /dev/shmtmp...原创 2019-05-29 20:04:41 · 5020 阅读 · 0 评论 -
Linux进程状态分析strace命令
1 简介strace用来跟踪系统系统调用和信号,对于分析进程状态非常有帮助。最简单的使用方式是直接strace加上command的方式执行,可以看到command执行的所有系统调用、参数、返回值等信息。例如cat文件...open("/dev/null", O_RDONLY) = 3fstat(3, {st_mode=S_IFCHR|0666, st_rdev=...原创 2019-04-30 17:04:27 · 3889 阅读 · 0 评论 -
File Descriptor问题总结
今天客户物理机上遇到文件描述符用尽的问题,现象包括:SSH连接物理机卡住PG服务端口TCP心跳检测失败PSQL卡住报错:too many open files概念在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用...原创 2019-04-21 13:57:19 · 6323 阅读 · 0 评论