源码分析
文章平均质量分 51
InsZVA
啊 你们要是看了我发的博客很多错误的地方 指出来啊 我比较菜 坑人的
展开
-
统治世界的缓存 --- glibc源码拜读 - printf
问题由来有这么一段代码:int main() { printf("aaa\n"); pid_t pid = fork(); if (pid < 0) { printf("an error occur\n"); } else if (pid == 0) { printf("i am child\n"); } else {原创 2017-01-08 15:41:45 · 2597 阅读 · 2 评论 -
glibc-文件读缓存的EOF判定坑
本文基于glibc2.24版本。问题起源于一个学弟的代码:#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main() { int rec = dup(0); int fd = open("./a.txt", O_RDON原创 2017-07-14 00:08:14 · 766 阅读 · 0 评论 -
Linux内核netfilter子系统ulogd项目性能调优记录
使用ULOGD打SYSLOG到SYSLOG-NG,当NFLOG拿到的数据包在6K左右时,CPU有两个核心占了15%左右使用修改过的ULOGD直接打TCP,CPU只有一个核心占15%左右(修改版在https://github.com/InsZVA/ulogd-with-syslog-tcp)使用perf top查看, 8.89% libc-2.12.so [.原创 2017-05-10 17:04:08 · 892 阅读 · 0 评论 -
linux内核与netlink有关的两个坑
最近做一些与netfilter/ulogd2性能调优有关的工作(https://github.com/InsZVA/ulogd-with-syslog-tcp),在过程中发现了两个内核概念理解的坑点。第一个问题是下面代码:```clen = recv(fd, ui->nfulog_buf, bufsiz_ce(upi->config_kset).u.value, 0);原创 2017-06-14 16:14:36 · 1638 阅读 · 0 评论 -
linux源码 网络包接收--从中断到协议栈
本文基于4.11内核linux在硬中断触发后,会进入do_IRQ函数(arch/x86/kernel/irq.c):/* * do_IRQ handles all normal device IRQ's (the special * SMP cross-CPU interrupts have their own specific * handlers). */__visible unsig原创 2017-06-27 23:36:53 · 1812 阅读 · 0 评论