高效访问内存
摘要:1、影响内存访问速度的因素 1).内存带宽:每秒读写内存的数据量,由硬件配置决定。2).CACHE高速缓冲:CPU与内存之间的缓冲器,当命中率比较高时能大大提供内存平均访问速度。3).TLB转换旁视缓冲:系统虚拟地址向物理地址转换的高速查表机制,转换速度比普通转换机制要快。 我们能够优化的只有第2点
阅读全文
自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
摘要:1、为什么需要自旋锁 很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗; 另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的
阅读全文
socket原始套接字编程
摘要:一、原始套接字概述协议栈的原始套接字从实现上可以分为“链路层原始套接字”和“网络层原始套接字”两大类。链路层原始套接字可以直接用于接收和发送链路层的MAC帧,在发送时需要由调用者自行构造和封装MAC首部。网络层原始套接字可以直接用于接收和发送IP层的报文数据,在发送时需要自行构造IP报文头(取决是否
阅读全文
socket进程通信
摘要:一、socket简介 socket,即套接字是一种通信机制,凭借这种机制,客户/服务器(即要进行通信的进程)系统的开发工作既可以在本地单机上进行,也可以跨网络进行。 也就是说它可以让不在同一台计算机但通过网络连接计算机上的进程进行通信。也因为这样,套接字明确地将客户端和服务器区分开来。 二、套接字的
阅读全文
linux动态链接库的使用
摘要:1、编译动态链接库 gcc -shared -fPIC main.c -o libday.so 2、使用动态链接库 # gcc -o test test.c -L 动态库路径 动态库文件 gcc -o test test.c -L ./ libday.so 3、将动态链接库放置环境路径 cp -rf
阅读全文
Linux配置service服务
摘要:1、service配置文件 每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。 Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配
阅读全文
CentOS7本地镜像之yum仓库配置
摘要:1、首先将镜像文件CentOS-7-x86_64-DVD-1708-7.4.iso放到/dev/cdrom目录下。 2、将/dev/cdrom目录下的镜像文件CentOS-7-x86_64-DVD-1708-7.4.iso,挂载到/mnt下。 3、进入到/etc/yum.repos.d/目录下,删除
阅读全文
Shell下重复多次执行命令
摘要:xargs $ seq 10 | xargs -i date Fri Jul 21 14:20:55 CST 2017 Fri Jul 21 14:20:55 CST 2017 Fri Jul 21 14:20:55 CST 2017 Fri Jul 21 14:20:55 CST 2017 Fri
阅读全文
c语言获取当前程序运行的cpuid
摘要:#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <syscall.h> #define ULONG unsigned long #define CHAR char #def
阅读全文
内核中获取当前时间
摘要:#include <linux/timer.h> #include <linux/timex.h> #include <linux/rtc.h> /*添加到合适位置*/ struct timex txc; struct rtc_time tm; do_gettimeofday(&(txc.time)
阅读全文
pthread_join()与pthread_detach()
摘要:pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收。 pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源。 在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程
阅读全文
CentOS7的journalctl日志查看方法
摘要:1、概述 日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从message这个文件里读取信息。 Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。 日志的配置文件是/etc/syste
阅读全文
cpupower调整CPU主频
摘要:1、调节策略 performance:将CPU频率固定工作在其支持的最高运行频率上,不动态调节,可以获取到最大的性能。 powersave: 将 CPU 频率设置为最低的所谓 “省电” 模式,CPU 会固定工作在其支持的最低运行频率上。 因此这两种 governors 都属于静态 governor,
阅读全文
Linux判断进程是否存在并启动该进程
摘要:#!/bin/bash #判断进程是否存在,如果不存在就启动它 PIDS=`ps -ef |grep myprocess |grep -v grep | awk '{print $2}'` if [ "$PIDS" != "" ]; then echo "myprocess is runing!"
阅读全文
linux下把进程/线程绑定到指定cpu核上
摘要:1、使用taskset指令 1)获取进程pid [root@CENTOS57 eq]# ps aux | grep led root 9240 0.0 0.0 6324 376 pts/0 S 07:40 0:00 ./ledThread root 9242 0.0 0.0 112660 968 p
阅读全文
Linux用户态线程pthread简单应用
摘要:1、pthread_exit函数 void pthread_exit( void * value_ptr ); 线程的终止可以是调用pthread_exit手动结束或者该线程的例程运行完成自动结束。也就是说,一个线程可以隐式的退出,也可以显式的调用pthread_exit函数来退出。 pthread
阅读全文
linux查看某个进程运行的CPU核
摘要:1、ps -eF #查看fwd进程运行在哪个cpu核上 [root@CENTOS57 rpm]# ps -eF | grep fwd 2.top命令 (1)top (2)按f键可以选择下面配置选项 P = Last Used Cpu (SMP) (3)Esc 退回到top界面可以看到多了一列进程所在
阅读全文
CentOS网卡一致性命名
摘要:1、问题 传统上,Linux中的网络接口被枚举为eth[0123…],但是这些名称不一定对应于机箱上的实际标签。具有多个网络适配器的现代服务器平台可能会遇到这些接口的不确定性和违反直觉的命名。这影响到板载网卡(LOM)和外接的网络适配器(PCIe独立网卡)。在Red Hat Enterprise L
阅读全文
linux之list_for_each和list_for_each_entry函数
摘要:比较:1.list_for_each和list_for_each_entry都是遍历链表的两个宏,本质上都是for循环。2.他们做的事情本质上都一样,A.获取链表头,B.判断链表项是不是链表头,C.指向链表的下一项。3.他们的区别:list_for_each遍历的链表,其链表项不属于某个结构体。或者
阅读全文
linux开机启动项
摘要:(1)编辑文件 /etc/rc.local 输入命令:vim /etc/rc.local 将出现类似如下的文本片段: #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can pu
阅读全文