03 2020 档案

摘要:在对 socket 绑定和监听前经过了以下设置 无阻塞(O_NONBLOCK) TCP 无延时(TCP_NODELAY) 可重用地址(SO_REUSEADDR) 对于 clien server需要设置: 无阻塞 server -->无延时 1、SO_REUSEADDR选项: 在服务器程序中,SO_R 阅读全文
posted @ 2020-03-29 23:01 codestacklinuxer 阅读(461) 评论(0) 推荐(0)
摘要:昨天帮人查bug,发现了一个vfork fork exit _exit不分导致的问题。 使用vfork 后调用exit导致的问题。 主要需要弄清楚他们之间的区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段2. fork ()父子进程的执行次 阅读全文
posted @ 2020-03-29 22:10 codestacklinuxer 阅读(163) 评论(0) 推荐(0)
摘要:查线上问题: 1、cpu idle 为0 ,I/O高, pidstat 发现进程io 不高,那就是cache mem引起系统io高了 没有vmstat,只能使用sar工具了,使用sar -r 查看buddyinfo 发现内存碎片化严重。同时drop_cache值为3一直在释放cache , eg:对 阅读全文
posted @ 2020-03-26 21:49 codestacklinuxer 阅读(584) 评论(0) 推荐(0)
摘要:线上问题 ./pidstat -w Linux 3.6.5-Broadcom Linux ((none)) 03/21/20 _armv7l_ (1 CPU) 15:04:17 UID PID cswch/s nvcswch/s Command 15:04:17 0 1 0.03 0.00 busy 阅读全文
posted @ 2020-03-26 20:41 codestacklinuxer 阅读(270) 评论(0) 推荐(0)
摘要:top , pidstat(sysstat) pid -p PID -t 1 10 vmstat 1 CPU上下文切换、运行队列、利用率 ps Hh -eo tid pcpu 查看具体线程的CPU消耗 ps -eLo pid,lwp,pcpu | grep 9140命令查看进程号为9140的进程中各 阅读全文
posted @ 2020-03-25 21:54 codestacklinuxer 阅读(202) 评论(0) 推荐(0)
摘要:1.目前valgrind 、 memleak 、free 、top 、ps 中vsz Rss 、 buddy、 slab 这些用的比较多,一般用于处理内存紧张问题 共享内存是通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小。tmpfs 其实也是一种特殊的缓存。 可用内存是新进 阅读全文
posted @ 2020-03-25 21:44 codestacklinuxer 阅读(213) 评论(0) 推荐(0)
摘要:I/O:某网上问题通过top iotop pidstat vmstat 工具定位出io高原因,内存不够。 iotop iostat -d 1 -x iostat 的两部分核心输出: CPU 使用率 (avg-cpu) %user: 用户空间程序占用的 CPU 百分比。 %system: 内核空间占用 阅读全文
posted @ 2020-03-23 23:27 codestacklinuxer 阅读(244) 评论(0) 推荐(0)
摘要:一、编译阶段 nm 获取二进制文件包含的符号信息 strings 获取二进制文件包含的字符串常量 strip 去除二进制文件包含的符号 readelf 显示目标文件详细信息 objdump 尽可能反汇编出源代码 addr2line 根据地址查找代码行 二、运行阶段 gdb 强大的调试工具 ldd 显 阅读全文
posted @ 2020-03-23 23:18 codestacklinuxer 阅读(319) 评论(0) 推荐(0)
摘要:gdb调试不管是本地调试还是远程调试,都是基于ptrace系统调用来实现。 ptrace系统调用提供了一种方法,让父进程可以观察和控制其它进程的执行,检查和改变其核心映像及寄存器。主要用来实现断点调试和系统调用跟踪可通过man手册查看具体使用:man ptrace SYSCALL_DEFINE4(p 阅读全文
posted @ 2020-03-23 17:59 codestacklinuxer 阅读(766) 评论(0) 推荐(0)
摘要:void event_warnx(const char *fmt, ...) EV_CHECK_FMT(1,2); #define EV_CHECK_FMT(a,b) __attribute__((format(printf, a, b))) void event_debugx_(const cha 阅读全文
posted @ 2020-03-23 14:45 codestacklinuxer 阅读(584) 评论(0) 推荐(0)
摘要:硬中断为什么不能休眠 中断线程以及软中断解决了什么问题 软中断cb函数是否允许相应本地中断,什么时候开启中断关闭中断 什么是软中断上下文 什么是tasklet 和软中断区别 1、中断线程以及软中断属于中断下半部机制;硬件中断会打断进程,异步执行,对于 重要的进程代码来说,希望硬件中断越短越好。所以硬 阅读全文
posted @ 2020-03-11 10:51 codestacklinuxer 阅读(585) 评论(0) 推荐(0)
摘要:SGI-software-generated-interrupt 软件触发中断,通常用于多核之间通信。 PPI-private-peripheral-interrupt 私有外设中断,比如本地cpu时钟中断 spi-shared-peripheral-interrupt 共用外设中断; static 阅读全文
posted @ 2020-03-11 10:48 codestacklinuxer 阅读(683) 评论(0) 推荐(0)
摘要:信号量有一个很明显的缺点,没有区分临界区的读写属性,读写锁允许多个线程进程并发的访问临界区,但是写访问只限于一个线程,在多处理器系统中允许多个读者访问共享资源,但是写者有排他性,读写锁的特性如下:允许多个读者同时访问临界区,但是同一时间不能进入;同一时刻只允许一个写者进入临界区;读者和写者不能同时进 阅读全文
posted @ 2020-03-09 12:13 codestacklinuxer 阅读(2682) 评论(0) 推荐(0)
摘要:信号量semaphore 信号量是一种允许进程进入睡眠的同步机制,信号量是一个计数器,支持两种原语即P 和V操作,也就是down 和up 操作, /* Please don't access any members of this structure directly */ struct semap 阅读全文
posted @ 2020-03-08 23:34 codestacklinuxer 阅读(290) 评论(0) 推荐(0)
摘要:内核并发来源: 1、硬件中断和异常:中断服务程序和被中断的进程可能发生并发访问资源 2、软中断和tasklet,软中断和taklet随时都可能倍调度执行,从而打断当前正在执行 进程的上下文。 3、内核抢占:调度器支持可抢占性,会导致进程和进程之间的并发访问。 4、多处理器并发执行,多处理器上可以同时 阅读全文
posted @ 2020-03-07 21:33 codestacklinuxer 阅读(401) 评论(0) 推荐(0)
摘要:HTTP中头部字段说明: Accept:告诉WEB服务器自己接受什么介质类型,* /* 表示任何类型,type/ * 表示该类型下的所有子类型,type/sub-type。 Accept-Charset: 浏览器申明自己接收的字符集 Accept-Encoding: 浏览器申明自己接收的编码方法,通 阅读全文
posted @ 2020-03-02 09:51 codestacklinuxer 阅读(85) 评论(0) 推荐(0)
摘要:1、HTTP方法 GET :获取资源 ,GET 方法用来请求访问已被 URI 识别的资源 POST:传输(上传和下载)实体主体 ,POST 方法用来传输实体的主体。虽然用 GET 方法也可以传输实体的主体,但一般不用 GET 方法进行传输,而是用 POST 方法。虽说 POST的功能与 GET 很相 阅读全文
posted @ 2020-03-01 23:42 codestacklinuxer 阅读(235) 评论(0) 推荐(0)
摘要:EPOLL的LT/ET 模式下的读写 从一个非阻塞的socket上调用recv/send函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被 阅读全文
posted @ 2020-03-01 23:41 codestacklinuxer 阅读(467) 评论(0) 推荐(0)