![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 75
Stoneshen1211
笨鸟后飞慢慢飞。。。
展开
-
Linux性能学习(4.7):网络_如何优化网络性能
在前面大致讲解了网络相关的一些参数,那么本篇就描述一下如何对网络相关参数进行优化。原创 2023-09-10 13:30:00 · 217 阅读 · 0 评论 -
Linux性能学习(4.6):网络_孤儿连接、半连接状态、RTS复位报文简述
在前面《TCP三次握手内核参数优化》和《TCP四次挥手内核参数优化》章节了解了一些概念:孤儿连接、半连接状态、RTS复位报文,在本文简单介绍下这些概念。原创 2023-09-10 12:00:00 · 425 阅读 · 1 评论 -
Linux性能学习(4.5):网络_TCP四次挥手内核参数优化
在Client和Server断开连接时候,会经历四次交互,称为四次挥手,本篇简单介绍下四次交互。如上图,客户端和服务端都可以主动先发起close操作,在这里,我们假设Client先发送close操作。2MSL的时长为30*2=60s,RFC793定义了MSL为2分钟,Linux设置成了30s,MSL是指报文在网络中的最长生存时间,之所以定义2MSL,是假设发送的ACK丢失,最大消耗一个MSL时间,然后Server端重发一次FIN报文,最大消耗一次MSL事件,那么此时出于TIME_WAIT状态的Client端原创 2023-08-06 23:00:00 · 456 阅读 · 0 评论 -
Linux性能学习(4.4):网络_TCP三次握手内核参数优化
在本篇中,引申出以下几个内核参数,除了tcp_retries2和tcp_keepalive_time外,其它内核参数均是和三次握手相关的。原创 2023-08-06 21:30:00 · 358 阅读 · 0 评论 -
Linux性能学习(4.2):网络_为什么MTU是1500
参考资料:1.2.原创 2023-07-02 05:15:00 · 2822 阅读 · 0 评论 -
Linux性能学习(4.1):网络_网络相关性能参数
参考资料:1.在前面CPU、内存、IO等部分,都有相关的参数来标识性能,在网络部分也有一些参数可以反应网络的性能。原创 2023-07-01 23:15:00 · 342 阅读 · 0 评论 -
Linux性能学习(3.3):IO_如何优化IO性能
参考资料:1.原创 2023-06-11 20:00:00 · 708 阅读 · 0 评论 -
Linux性能学习(3.2):IO_磁盘IO
在上一篇中,大致了解了文件系统的一些知识,了解了不同的文件系统以及VFS的概念,其实在存储介质上也是有这个情况,在嵌入式开发中,会根据不同的项目使用不同的存储介质:spi flash、emmc flash、nor flash、nand falsh等等,不同的存储介质在系统中则会有不同的设备驱动程序。因此,系统会类似于VFS的做法,抽象一层(通用块层)在块设备驱动和文件系统之间,这样用户直接访问标准接口即可,不用关心不同驱动程序的差异。原创 2023-06-11 15:00:00 · 1759 阅读 · 0 评论 -
Linux性能学习(3.1):IO_文件系统IO
参考资料:1.在Linux下一切皆文件,当我们操作一个文件时候,最基础的就是读写操作,即I/O操作,因此这篇就大致了解解文件系统I/O的相关功能。原创 2023-05-07 19:30:00 · 464 阅读 · 1 评论 -
Linux性能学习(2.6):内存_如何优化内存,提高效率
堆主要是通过malloc动态分配的区域,而栈则是保存局部变量的。在前面我们知道通过malloc来申请内存,即便是有内存池,还是需要消耗时间和性能来进行分配,所以如果将一些变量提前定义好,那么编译器在编译时候就自动分配到栈上,在程序运行时候,不需要再次申请,从而加快效率。但是,这种方式也是有缺点,因为是局部的,所以如果函数调用结束就会自动释放;栈的空间也有限,如果申请的过大就会造成栈溢出。原创 2023-05-07 17:30:00 · 535 阅读 · 0 评论 -
Linux性能学习(2.4)内存_为什么会预分配很大的虚拟内存及Ptmalloc2
当我们是有malloc申请内存时候,Ptmalloc2会预先分配比申请内存更大的空间作为内存池,然后再在内存池中,取出申请的内存给到用户,当用户释放内存时候,内存池会根据一些策略来判断是否释放给系统,如果不释放这块内存,那么就会将这块内存还到内存池中,供下次申请时使用,这样效率会更高。当申请的内存大于当前内存池时候,内存池会继续申请新的内存池来进行管理,一旦申请新的内存池,那么内存池数量就不会减小,即便某块内存池已经完全空闲,也不会减小。另外,单个子线程的内存池的数量最大是8倍的CPU数。原创 2023-04-02 10:00:00 · 303 阅读 · 0 评论 -
Linux性能学习(2.3):内存_为什么分配的内存比申请的内存大16个字节
在上一篇文章中,探讨了Linux系统对进程以及线程的内存分配问题,然后采用申请1KB内存的方式进行验证,然后发现将第二次申请的内存地址减去第一次申请内存的地址,长度为1040,比我们申请的1024多了16个字节,从而提出一个问题,“在64位系统中,为什么系统分配的内存比实际申请的内存大16个字节?原创 2023-03-05 07:00:00 · 673 阅读 · 0 评论 -
Linux性能学习(2.2):内存_进程线程内存分配机制探究
第一个问题:64位系统,为什么系统分配的内存比实际申请的内存大16个字节?第二个问题:64位系统,为什么系统会给进程申请132KB的内存,而不是我们真正需要的内存?第三个问题:64位系统,为什么系统会给线程申请64MB的内存,而不是我们真正需要的内存?后面章节将解决这几个问题。原创 2023-03-05 05:00:00 · 854 阅读 · 0 评论 -
Linux性能学习(2.1):内存_查看系统内存以及Buffer Cached说明
简单介绍下如何查看系统/进程内存相关参数以及各个参数的含义。原创 2023-02-05 11:30:00 · 1651 阅读 · 0 评论 -
Linux性能学习(1.5):CPU_如何找到CPU使用率高原因
参考资料:1.2.原创 2023-02-05 02:00:00 · 522 阅读 · 0 评论 -
Linux性能学习(1.4):CPU_如何查看CPU上下文切换参数
在前面大致了解了上下文切换的相关知识,那么如何在系统中查看上下文切换相关的参数?原创 2023-01-01 22:00:00 · 928 阅读 · 1 评论 -
Linux性能学习(1.3):CPU_CPU上下文切换
在Linux下,如果我们使用ps指令可以看到有很多进程在同时运行,但是实际上并不是同一时刻运行的,单核CPU在某一时刻只会运行一个任务,而系统则会通过调度算法(时间片轮转、中断优先、高优先级优先等算法)将不同的任务给到CPU运行,从而造成可以同时执行很多进程的假象。在系统将某一个任务给到CPU运行时候,CPU则需要将当前正在执行的指令进行存储,以便下次执行这个任务,以及需要知道下一个任务的指令的位置,以便加载进来运行,而程序计数器则是用于存放指令所在地址的地方;原创 2023-01-01 15:15:00 · 627 阅读 · 0 评论 -
Linux性能学习(1.2):CPU_如何提高CPU缓存命中率
在上一篇文章中简单介绍了CPU缓存的相关知识,并且引申出了一个概念—“CPU缓存命中”,那么如何让我们编写的程序尽可能的被CPU缓存命中,从而尽可能的提高运行效率?原创 2022-12-18 10:15:00 · 867 阅读 · 0 评论 -
Linux性能学习(1.1):CPU_CPU缓存
CPU的运算是需要数据的,因此就需要从内存中读写一些数据来进行运算。但是CPU的运算速度很快,而内存的读写速率相比较于CPU的运行速率就比较慢,因此CPU就需要花费时间等待内存的数据到来或者把数据写入内存,这种操作就无法发挥CPU的全部功力。因此,一种新的读写速度更快的内存—“缓存”被设计出来,用来存储一些需要频繁被访问的数据,这样CPU会先从速度更快的缓存中来读写数据,加快CPU的运算。缓存本质上还是内存,只不过读写速度会比内存快很多。原创 2022-12-17 23:30:00 · 602 阅读 · 0 评论 -
Linux杂谈(4):ulimit简介
文章目录1 使用方法2.参数2.1 -S2.2 -H2.3 -a2.4 -c2.5 -d2.6 -e2.7 -f2.8 -i2.9 -l2.10 -m2.11 -n2.12 -p2.13 -q2.14 -r2.15 -s2.16 -t2.17 -u2.18 -v2.19 -xulimit指令可以用来查看以及设置单个用户可以使用的系统资源大小。1 使用方法ulimit: usage: ulimit [-SHabcdefilmnpqrstuvxT] [limit][-SHabcdefilmnpqrst原创 2022-01-09 20:00:00 · 722 阅读 · 0 评论 -
Linux杂谈(3):Epoll简介
文章目录1 epoll_create2 epoll_ctl2.1 epfd2.2 op2.3 event3 epoll_wait3.1 epfd3.2 events3.3 maxevents3.4 timeout4 示例在前面简单介绍了select的使用方法,但是select也有一些缺点,因此2.6内核引入了epoll,优化了select的性能问题。1 epoll_create函数原型: #include <sys/epoll.h> int epoll_create(int si原创 2022-01-09 19:30:00 · 388 阅读 · 0 评论 -
Linux杂谈(2):Select简介
文章目录1 select简介2 函数详解2.1 函数原型2.2 参数2.2.1 nfds2.2.2 readfds2.2.3 writefds2.2.4 exceptfds2.2.5 timeout2.3 文件描述集合操作2.3.1 FD_ZERO()2.3.2 FD_SET()2.3.3 FD_CLR()2.3.4 FD_ISSET()2.4 注意2.5 示例3 文件描述符集合细探4 select的缺点1 select简介在linux下,我们可以使用select来进行I/O复用,可以监视多个文件描述符原创 2021-12-05 17:00:00 · 908 阅读 · 0 评论 -
Linux杂谈(1):Linux IO模型
文章目录1 同步阻塞IO2 同步非阻塞IO3 IO多路复用4 信号驱动IO5 异步IO简单记录一下linux下的几种I/O模型,防止遗忘。1 同步阻塞IO同步阻塞IO是最简单的IO模型,在使用这种模型进行数据接收的时候,如果没有数据,会一直等待,即阻塞在这里,直到有数据才返回。2 同步非阻塞IO同步非阻塞IO,在使用这种模型进行数据接收的时候,不管有没有数据都会返回,不阻塞。如果没有数据,立马返回;如果有数据,从内核空间拷贝数据后返回。如果我们需要读取数据,但是没有数据立马返回,那么我们就需要不原创 2021-12-05 10:04:24 · 182 阅读 · 0 评论 -
wpa_supplicant交叉编译
文章目录1 lbssl编译1.1下载1.2编译2 libnl编译2.1 下载2.2 编译3 wpa_supplicant3.1 下载3.2 编译wpa_supplicant 的编译依赖 libnl 库、libssl库,因此需要先编译这两个库。1 lbssl编译1.1下载下载链接:https://www.openssl.org/source/下载文件openssl-1.0.2r.tar.g...原创 2019-06-09 17:45:29 · 6857 阅读 · 7 评论 -
RTL8188 "Set Mode" (8B06) 问题
在使用RTL8188过程中,想要使8188进入monitor模式,使用如下设置指令:iwconfig ra0 mode monitor但是出现如下打印:Error for wireless request "Set Mode" (8B06) : SET failed on device ra0 ; Operation not supported.device ra0 entere...原创 2019-08-31 08:40:20 · 3436 阅读 · 6 评论 -
minimxml使用_介绍
文章目录1 简介2下载及编译2.1 mxml库的下载地址:2.2 编译2.3 生成库3 重要函数简介3.1 mxmlNewXML3.2 mxmlNewElement3.3 mxmlNewText3.4 mxmlSaveString3.5 mxmlDelete3.6 mxmlLoadString3.7 mxmlFindElement3.8 mxmlGetText1 简介工作中经常使用mxml进行...原创 2019-09-28 08:30:35 · 1869 阅读 · 0 评论 -
minimxml使用_创建及分析xml
文章目录1 创建2 解析前面简单介绍了一些mini mxml常用函数,下面将使用这些函数创建以及分析一个xml文件1 创建我们假如要创建一个xml文件,如下:<?xml version="1.0" encoding="utf-8"?><TEST> <num>1</num> <people> <...原创 2019-09-28 08:30:48 · 807 阅读 · 0 评论 -
linux c程序中获取shell脚本输出的实现方法
转载自:http://www.jb51.net/article/40812.htm以下是对在linux下c程序中获取shell脚本输出的实现方法进行了详细的分析介绍,需要的朋友可以过来参考下. .1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连转载 2016-08-06 22:12:51 · 4779 阅读 · 0 评论 -
linux下通过脚本监控程序运行
转载自:http://blog.csdn.net/shanzhizi/article/details/10180183shanzhizi大神的,写的很实用,谢谢大神。应用程序运行过程中,任何人都无法保证它永远不死定,因此自动重启就十分必要。以下是自动重启的shell脚本实现方法,shell脚本来自网络。 假定需要实现重启的程序名为 test ,我们这里通过判断进程数目来判断程序是否正常。 ps转载 2016-02-18 18:32:49 · 4604 阅读 · 0 评论 -
RTL8189FTV驱动交叉编译
文章目录1 源码下载2 编译参考博客:华为海思3518EV300工作笔记三:REL 8189FTV WIFI模块驱动移植https://blog.csdn.net/qq_22182835/article/details/8945834728 H5上rtl8189ftv wifi驱动移植https://blog.csdn.net/jklinux/article/details/787376...原创 2019-07-28 14:58:10 · 5740 阅读 · 3 评论 -
网络编程学习笔记(ioctl操作)
转载自:https://blog.csdn.net/xiexingshishu/article/details/409189711、ioctl函数其函数需要的头文件及声明如下:#include &amp;lt;unistd.h&amp;gt;int ioctl(int fd, int request, .../*void *arg/);第三个参数总是一个指针,但指针的类型依赖于request把和网...转载 2019-01-14 18:57:45 · 450 阅读 · 0 评论 -
Linux下网络相关结构体 struct protoent
参考书籍:《UNIX环境高级编程》 参考连接: http://www.cnblogs.com/benxintuzi/p/4589819.html一、简介 sutuct protoent主要用于提供协议名字和协议号 结构体如下:struct protoent { char *p_name; char **p_aliases; int p_proto;原创 2017-10-16 20:05:53 · 1269 阅读 · 0 评论 -
嵌入式学习-驱动开发前奏-lesson3-linux内核链表
1)链表简介链表是一种常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。2)链表的分类和组成链表的最基本组成元素,节点每一个节点都是由数据域和指针域组成。 根据其不同,可以将链表分为单向链表、双向链表、双向循环原创 2016-07-22 18:15:20 · 618 阅读 · 2 评论 -
ok6410 3.0.1内核调用V4L接口出错解决方法
在做视频监控项目,以前一直用的是2.6.36的内核,一直很正常,但是这几天换3.0.1内核,启动程序,却出现了错误,如下:./test_usb_camera XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXv4l2_open id=2Unable to handle kernel NULL pointer dereference at virtu原创 2016-05-05 17:21:34 · 1077 阅读 · 1 评论 -
嵌入式 十个最值得阅读学习的C开源项目代码
转载自:http://my.oschina.net/zhoukuo/blog/335788#OSC_h2_1留以分享开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。 十个最值得阅读学习的C开源项目代码 1. Webbench 2. Tinyhttpd 3. cJSON 4. CMockery 5. Libev 6. Mem转载 2016-04-20 09:28:52 · 2782 阅读 · 0 评论 -
深入理解Linux修改hostname
转载自:http://www.cnblogs.com/kerrycode/p/3595724.html尊重大神,没有转载网址的内容,请大家移步到上述网址查看具体内容。转载 2016-05-10 16:08:09 · 375 阅读 · 0 评论 -
Linux/Unix time时间戳的处理转换函数
转载自:http://blog.csdn.net/cserchen/article/details/5954150linux下的时间函数 我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日转载 2016-02-20 11:15:57 · 1749 阅读 · 0 评论 -
和菜鸟一起学linux之V4L2摄像头应用流程
转载自:http://blog.csdn.net/eastmoon502136/article/details/8190262东月之神 大神的,很有用,保存一下。转载 2016-03-04 12:37:21 · 729 阅读 · 0 评论 -
Linux下ps命令详解
转自:http://blog.csdn.net/andy572633/article/details/8253927很详细的文章。有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所以在同等情况下,进程的数 量要比程序多的多。为此从阅读方面考虑,管理员需要知道系统中运行的具体程序。要实现这个需求的话,就需要利用命令ps来帮忙。 要转载 2016-02-17 14:28:26 · 3682 阅读 · 0 评论 -
Linux终端彩色文字输出
转自:http://www.cnblogs.com/ruihong/archive/2012/10/22/linux_terminal_output_color_text.html可以看看,很有用格式echo “\033[字背景颜色;字体颜色m字符串\033[0m” 例如:echo “\033[41;36m something here \033[0m” 其中41的位置代表底色, 36的位置转载 2016-01-22 15:06:20 · 2250 阅读 · 0 评论