- 博客(84)
- 资源 (215)
- 问答 (3)
- 收藏
- 关注
原创 使用mprotect系统调用来调试内存问题:memalign,aligned_alloc
编写多任务应用程序时需要做出的决定之一是使用进程(使用fork系统调用)还是使用线程(使用posix库)。使用多个线程的主要好处是它们之间共享内存,但是当一个线程例如捣毁另一个线程缓冲区时,此功能也会产生问题。调试这种情况很困难,因为我们看到了垃圾数据,但是我们无法弄清楚是哪个线程执行的。解决该问题的一种方法是在缓冲区之间添加没有权限的保护页。在Linux中使用posix线程时,默认情况下,其保护大小属性为一页自动完成。例:#include<stdio.h>#include<
2020-09-30 17:35:59 1541 16
翻译 Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块
介绍了一个基本的文件系统模块。增强了先前编写的裸机文件系统模块,以与真实的硬件分区连接。使完整的真实SIMULA文件系统模块发挥作用,并且在笔式驱动器上具有真实的硬件分区。
2020-09-30 15:31:24 2328 11
转载 Linux在多线程应用程序中处理信号
信号是Linux中非常有用的功能,它可以将通知从一个进程发送到另一个进程,并从内核发送到该进程。在某些错误情况下(访问错误的内存地址,总线错误,浮点错误等)发送信号,并通知用户应用程序(定时器到期,子进程完成,IO准备就绪...)。
2020-09-30 13:56:36 415 2
原创 YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统
Yocto ,是一个开源社区。它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构。Yocto Project™是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和嵌入式产品,而无需关心硬件体系。适合嵌入式Linux开发人员使用。极大地简化你的开发过程,因为你不用再从头裁剪一个完整的Linux发布版本,后者通常包括许多你并不需要的软件。
2020-09-30 13:42:46 806 1
原创 Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups
要在Linux中创建新进程,我们可以使用fork(2)或clone(2)系统调用。我们使用fork(2)创建一个带有单独内存映射的新子进程(使用CoW),我们使用clone(2)创建一个与其父级共享资源的子进程。克隆的一种用途是实现多线程,另一种用途是实现名称空间。使用cgroups可以限制进程的资源使用,例如,如果您有Web服务器,并且想要将其内存使用量限制为1GB,则使用cgroups很容易。这也是容器的基本构建块
2020-09-30 13:10:45 1133 2
原创 Linux IO复用:select、poll、epoll的理解与对比
Linux(实际上是Unix)的一个基本概念是Unix / Linux中的所有内容都是文件的规则。每个进程都有一个文件描述符表,该表指向文件,套接字,设备和其他操作系统对象。与许多IO源一起使用的典型系统具有初始化阶段,然后进入某种待机模式–等待任何客户端发送请求并对其进行响应
2020-09-30 09:37:10 650 9
翻译 Linux内核开发:内核模块参数
在本文中,我们将向模块添加参数。使用参数,您可以在加载模块时访问模块全局变量,并在运行时已加载模块时访问模块全局变量。
2020-09-30 09:10:37 1922 6
翻译 Linux内核:网络过滤器简介与示例代码
网络过滤是Linux内核中很好的基础结构,它使我们能够过滤和操作网络堆栈中的数据包。您可以构建用于防火墙过滤的网络过滤器,记录数据包,加密/解密等等。
2020-09-30 08:40:20 1597
翻译 Linux内核:了解Linux内核抢占
在配置Linux内核时,我们可以设置一些影响系统行为的参数。您可以使用不同的优先级,调度类和抢占模型。了解并选择正确的参数非常重要。在这篇文章中,我将介绍不同的抢占模型,以及每种模型如何影响用户和内核行为。
2020-09-30 08:28:12 453 14
原创 Net-snmp开发流程:MG-SOFT套件生成C语言snmp set/get代码
C语言Net-snmp开发流程:实现SNMP set/getRToax2020年9月>参考资料《深入理解net-snmp书籍》。>本文提供编写&编译MIB文件的法、提供使用net-snmp工具开发代码、测试程序的方法。1. net-snmp简介1.1. 操作net-snmp是SNMP的开源实现。SNMP即网络管理功能,主要包括以下操作:get系列命令,网管发出请求,获取代理的管理信息;set命令,网管发出请求,将报文中携带的数据写入代理中;trap系列,代.
2020-09-29 16:01:16 3494 2
转载 Linux内核:进程上下文切换
都知道操作系统的一个重要功能就是进行进程管理,而进程管理就是在合适的时机选择合适的进程来执行,在单个cpu运行队列上各个进程宏观并行微观串行执行,多个cpu运行队列上的各个进程之间完全的并行执行。进程管理是个复杂的过程,例如进程的描述、创建和销毁、生命周期管理、进程切换、进程抢占、调度策略、负载均衡等等。本文主要关注进程管理的一个切入点,那就是进程的上下文切换,来理解linux内核是如何进程进程上下文切换的,从而揭开上下文切换的神秘面纱。进程地址空间切换和处理器状态切换。
2020-09-29 13:10:03 1293 3
翻译 GNS3 Windows安装
GNS3 是一个图形化的网络拓扑逻辑模拟工具。通过它可以模拟和配置各种设备包括简单到普通的工作站以及功能强大的 CISCO 路由器,提供了一个 IOS 仿真器以及一个 PIXOS 仿真器用来模拟 CISCO PIX 防火墙。
2020-09-29 09:05:27 1529 6
原创 Linux指令大全
https://wangchujiang.com/linux-command/hot.htmlab - Apache服务器的性能测试工具 accept - 指示打印系统接受发往指定目标打印机的打印任务 ack - 比grep好用的文本搜索工具 alias - 定义或显示别名。 apachectl - Apache服务器前端控制工具 apk - Alpine Linux 下的包管理工具 apropos - 在 whatis 数据库中查找字符串 apt-get - Debian Linux发行
2020-09-29 08:29:17 246
原创 libevent的两个服务端、客户端示例(C语言)
libevent的 API提供一种机制,在特定事件上的文件描述符或达到超时后发生时执行的回调函数。此外,由于信号或常规超时,libevent还支持回调。libevent旨在替换事件驱动的网络服务器中的事件循环。应用程序只需要调用 event_dispatch(),然后动态添加或删除事件,而无需更改事件循环。
2020-09-28 17:04:57 1147 1
原创 什么是RAID(独立磁盘冗余阵列)?
RAID是用于提高数据存储性能和/或可靠性的技术。缩写代表较旧且使用较少的独立驱动器冗余阵列或廉价磁盘冗余阵列。RAID系统由两个或多个并行工作的驱动器组成。这些可以是硬盘,但也有一种趋势是将技术用于SSD(固态硬盘)。有不同的RAID级别,每种级别针对特定情况进行了优化。这些没有由行业组织或标准化委员会标准化。这解释了为什么公司有时会提出自己的唯一编号和实现方式。
2020-09-28 13:37:04 1218
原创 网络合作伙伴通信协议指南:NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS
http://www.dingdean.com/company/img/Protocol_Layer.pdfhttp://www.dingdean.com/company/img/Protocol_Layer.pdf
2020-09-28 13:17:31 585
转载 Cgroups是什么
原文地址:https://www.cnblogs.com/lisperl/archive/2013/01/14/2860353.html作者:王喆锋 zhefwang@gmail.com(侵删)Cgroups是什么?Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是L.
2020-09-28 08:45:46 703 1
原创 DPDK lcore学习笔记
1. DPDK核绑定的全局概览DPDK核绑定的相关函数,都集中在rte_eal_init()函数中调用:其中主要分为六部分:检测所有的cpu。 解释核绑定相关参数。 主线程的核绑定。 中断处理线程的创建 副线程的创建。 线程启动和等待。注意:本文中,cpu所指的是机器上的逻辑核(也被称为logical processor,简称为processor)。以下的是rte_eal_init()函数的调用图: main +-> rte_eal_init ...
2020-09-28 08:44:20 3687 1
翻译 Valgrind快速入门指南
Valgrind工具套件提供了许多调试和性能分析工具,可帮助您使程序更快,更正确。这些工具中最流行的称为Memcheck。它可以检测到许多与内存有关的错误,这些错误在C和C ++程序中很常见,并且可能导致崩溃和不可预测的行为。
2020-09-28 08:42:21 356 2
翻译 SPDK:存储性能开发套件(Storage Performance Development Kit)介绍
SPDK的基础是用户空间,轮询模式,异步,无锁的NVMe驱动程序。这提供了零拷贝,高度并行的访问,可从用户空间应用程序直接访问SSD。该驱动程序被编写为具有单个公共标头的C库。SPDK还提供了完整的块堆栈作为用户空间库,该库执行与操作系统中的块堆栈相同的许多操作。这包括统一不同存储设备之间的接口,排队以处理诸如内存不足或I / O挂起之类的情况以及逻辑卷管理。SPDK 在这些组件之上提供了NVMe-oF,iSCSI和虚拟主机服务器,这些服务器能够通过网络或其他进程为磁盘提供服务。
2020-09-28 08:41:56 2727 6
转载 MongoDB 教程 | 菜鸟教程
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
2020-09-27 21:01:07 6908 2
翻译 模式搜索的KMP算法详解与C语言代码实现
Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。
2020-09-27 20:50:06 684 1
翻译 关于布隆过滤器的所有信息:利用Hash实现的索引方案
如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit array)中的一个点。这样一来,我们只要看看这个点是不是1就可以知道集合中有没有它了。这就是布隆过滤器的基本思想。
2020-09-27 20:13:30 861 2
转载 全面认识高并发:高性能、高可用、高扩展
高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。
2020-09-27 19:47:33 8571 2
翻译 TCP / IP攻击:ARP缓存中毒的基本原理、TCP序列号预测和TCP重置攻击
解释ARP缓存中毒的基本原理https://www.thegeekstuff.com/2012/01/arp-cache-poisoning/假设“ A”和“ B”是非常好的朋友,“ A”与“ B”共享他的所有秘密。现在,如果一个人“ C”进入并假冒“ B”。你能想象会发生什么吗?是的,“ A”可以告诉他所有的秘密给“ C”,而“ C”可以滥用它。用外行语言来说,这就是ARP缓存中毒的意思。ARP中毒可能会导致许多严重的网络问题,网络管理员应了解此攻击的工作方式。A...
2020-09-27 18:05:02 2214 1
原创 TCP流量控制和滑动窗口
目录TCP流量控制和滑动窗口什么是TCP滑动窗口?它是如何工作的?快速发送器,慢速接收器TCP滑动窗口TCP流量控制和滑动窗口https://www.ibm.com/support/knowledgecenter/en/SSGSG7_7.1.0/com.ibm.itsm.perf.doc/c_network_sliding_window.html传输控制协议(TCP)使用滑动窗口进行流量控制。在调整任何TCP / IP设置之前,请先了解TCP滑动窗口的工作方式。TCP滑.
2020-09-27 17:58:48 749 6
原创 负载均衡器如何在服务器之间分配客户端流量?
https://kemptechnologies.com/load-balancer/load-balancing-algorithms-techniques/有许多技术和算法可用于智能地平衡服务器池之间的客户端访问请求。选择的技术将取决于所请求的服务或应用程序的类型以及请求时网络和服务器的状态。下面概述的方法将结合使用,以确定服务新请求的最佳服务器。当前对负载均衡器的请求级别通常确定使用哪种方法。当负载较低时,一种简单的负载平衡方法就足够了。在高负载时,将使用更复杂的方法来确保请求的均匀分配.
2020-09-27 17:46:34 796
原创 数据结构可视化网址
https://www.cs.usfca.edu/~galles/visualization/Algorithms.htmlData Structure VisualizationsCurrently, we have visualizations for the following data structures and algorithms:Basics Stack: Array Implementation Stack: Linked List Implementation Qu
2020-09-27 13:14:34 383
翻译 通过零拷贝进行有效的数据传输(java、c)
许多Web应用程序提供大量的静态内容,这相当于从磁盘上读取数据并将完全相同的数据写回响应套接字。该活动似乎需要较少的CPU活动,但效率较低:内核从磁盘读取数据并将其跨内核用户边界推送到应用程序,然后应用程序将其跨内核用户边界推送回写入插座。实际上,该应用程序充当了效率低下的中介,将数据从磁盘文件获取到套接字。每次数据越过用户内核边界时,都必须将其复制,这会消耗CPU周期和内存带宽。幸运的是,您可以通过一种称为零副本的技术来消除这些副本。使用零复制的应用程序要求内核直接将数据从磁盘文件复制到套...
2020-09-27 13:03:07 762 1
转载 搞懂Linux零拷贝,DMA
磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效地减少磁盘的访问次数。
2020-09-27 12:50:50 4881 10
原创 DELL戴尔服务器RAID磁盘阵列默认识别更换后的硬盘
如果没有默认设置BIOS启动,请先配置BIOS启动,参见下文:《UEFI 引导与 BIOS 引导》《如何部署一台DELL虚拟化服务器:CentOS7.4系统,虚拟化技术》对BIOS的设置有介绍。1.启动界面按ctrl+R进入如下界面:2.按ctrl+N选择进入控制管理界面3.勾选enable auto import后,应用退出...
2020-09-25 11:29:56 1362
原创 Linux协议栈:基于ping流程窥探Linux网络子系统,及常用优化方法
初识 Linux 网络栈及常用优化方法RToax2020年9月初识 Linux 网络栈及常用优化方法1. 文章简介基于 ping 流程窥探 Linux 网络子系统,同时介绍各个模块的优化方法。2. ping 基本原理Client 端发送 ICMP ECHO_REQUEST报文给 ServerServer 端回应ICMP ECHO_REPLY报文给 Client这其中涉及基本的二三层转发原理,比如:直接路由、间接路由、ARP 等概念。这部分不是本文重点,最基本的网络通信原理可以
2020-09-25 09:00:44 1157 15
原创 abrtd:Executable ‘some execution‘ doesn‘t belong to any package and ProcessUnpackaged is set to ‘no‘
问题描述:[root@localhost 182589]# systemctl status abrtd● abrtd.service - ABRT Automated Bug Reporting Tool Loaded: loaded (/usr/lib/systemd/system/abrtd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-09-23 12:29:20
2020-09-23 15:50:52 4490
原创 FD.io VPP环境下运行用户应用程序教程
FD.io VPP环境下运行用户应用程序教程RToax2020年9月相关文章:《FD.io VPP利用iperf3进行UDP灌包测试-英特尔X520万兆网卡》1. VPP简介VPP是思科矢量数据包处理(VPP)技术的开源版本:一种高性能的数据包处理协议栈。具体介绍请阅读相关文档,此处不做VPP介绍相关内容。2. VPP协议栈架构DPDK用户态驱动接管10G网卡,VPP内嵌DPDK插件(plugin)组成一套完整的用户态网络协议栈。通过使用VCL库,VPP可以重定向应用程序的接口函数,当然
2020-09-23 13:35:18 2522 7
转载 Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO
MSS 是 TCP 数据段每次能够传输的最大数据分段的长度。为了达到最佳的传输效能,TCP 协议在建立连接的时候通常要协商双方的 MSS值,这个值 TCP 协议在实现的时候往往用 MTU 值代替( MSS = MTU - IP 数据包包头大小20Bytes - TCP 数据段的包头大小20Bytes),所以在默认以太网 MTU 为 1500 bytes 时,MSS为 1460。目录1. 为什么需要 Segmentation offloading2. Segmentation offloadi..
2020-09-23 11:24:39 10049 9
翻译 使用DPDK打开Open vSwitch(OvS) *概述
本文概述了带有数据平面开发套件(OvS-DPDK)(高性能,开源虚拟交换机)的Open vSwitch *,并链接到进一步深入探讨各个OvS-DPDK功能的其他技术文章。本文是为希望了解有关DPDK集成的OvS用户编写的。注:用户可以下载的zip文件OVS主分支或2.6分支,以及安装步骤的主分支或2.6分支。罗宾·吉勒,发布时间:2016年9月27日最后更新:2016年12月19日OvS-DPDK高级架构Open vSwitch是一种生产质量的多层虚拟交换机,已...
2020-09-23 10:29:04 1764
转载 Redis缓存持久化:RDB持久化和AOF持久化
突然挂了!Redis缓存都在内存中,这下完了!来源 | 编程技术宇宙作者 | 轩辕之风O我是Redis,一个叫Antirez的男人把我带到了这个世界上。“快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我。慢慢睁开眼睛,原来旁边是MySQL大哥。“我怎么睡着了?”“嗨,你刚才是不是出现了错误,整个进程都崩溃了!害得一大堆查询请求都给我怼过来了!”MySQL说到。刚刚醒来,脑子还有点懵,MySQL大哥扶我起来继续工作。“糟了!我之前缓存的数据全都不见了!”“WTF?你没有做持久化吗?”My
2020-09-22 12:51:27 224 10
翻译 C10K问题:是时候让Web服务器同时处理一万个客户端了
是时候让Web服务器同时处理一万个客户端了,您不觉得吗?毕竟,网络现在是一个很大的地方。而且计算机也很大。您可以以1200美元左右的价格购买带有2 GB RAM的1000MHz机器和1000Mbit / sec以太网卡。我们来看-在20000个客户端上,每个客户端分别为50KHz,100Kbytes和50Kbits / sec。从磁盘上获取4 KB的数据并将其每秒发送给网络(每2万个客户端一次),所需要的功能不应该超过它。(顺便说一下,每个客户端的费用为0.08美元。某些操作系统收取的每客户端100美元
2020-09-22 08:56:48 819
原创 DPDK跟踪库:trace library
DPDK笔记 DPDK 跟踪库RToax2020年9月跟踪库1. 总览跟踪是一种用于了解正在运行的软件系统中发生了什么的技术。用于跟踪的软件称为跟踪器,从概念上讲它类似于磁带记录器。记录时,放置在软件源代码中的特定检测点会生成事件,这些事件将保存在巨型磁带上:跟踪文件。然后,可以稍后在跟踪查看器中打开跟踪文件,以使用时间戳和多核视图来可视化和分析跟踪事件。这种机制对于解决诸如多核同步问题,等待时间测量,找出诸如CPU空闲时间之类的后分析信息之类的广泛问题非常有用,否则这些问题将极具挑战
2020-09-21 18:35:52 1389 6
C语言设计模式 PDF《C Design Pattern》
2024-04-17
C, GNUC GCC 预处理《The C Preprocessor》
2024-04-16
User Guide: Open Build Service
2022-05-13
CentOS Stream 9 nasm 安装包
2022-05-01
CentOS Stream 9 nasm 源码包
2022-05-01
Optimizing Linux Kernel with BOLT.pdf
2022-01-21
red_hat_enterprise_linux-8-customizing_anaconda-en-us.pdf
2022-01-18
cclinux-coreos-34.20211111.3.0-live.x86_64.iso
2021-11-11
Ftrace Kernel Hooks-More than just tracing.pdf
2021-10-22
cpumemory-What Every Programmer Should Know About Memory.pdf
2021-09-10
architecture-instruction-set-extensions-programming-reference
2021-09-10
System V Application Binary Interface - AMD64 Architecture
2021-09-10
Hidden Linux Metrics with Prometheus eBPF Exporter.pdf
2021-09-03
e2ap-v01.00.00.asn
2021-08-25
Intel 64 and IA-32 Architectures Software Developer’s Manual Combined
2021-07-07
谈谈你对Container Linux容器操作系统的理解
2021-11-14
Linux“实时补丁”导致CPU无法占满运行
2021-02-22
C语言如何将字符串“int”转化为int类型
2019-01-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人