自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RToax

Just for Fun

原创 使用mprotect系统调用来调试内存问题:memalign,aligned_alloc

编写多任务应用程序时需要做出的决定之一是使用进程(使用fork系统调用)还是使用线程(使用posix库)。使用多个线程的主要好处是它们之间共享内存,但是当一个线程例如捣毁另一个线程缓冲区时,此功能也会产生问题。调试这种情况很困难,因为我们看到了垃圾数据,但是我们无法弄清楚是哪个线程执行的。 解决...

2020-09-30 17:35:59 659 16

翻译 Linux内核:一文读懂文件系统、缓冲区高速缓存和块设备、超级块

介绍了一个基本的文件系统模块。增强了先前编写的裸机文件系统模块,以与真实的硬件分区连接。使完整的真实SIMULA文件系统模块发挥作用,并且在笔式驱动器上具有真实的硬件分区。

2020-09-30 15:31:24 200 11

转载 Linux在多线程应用程序中处理信号

信号是Linux中非常有用的功能,它可以将通知从一个进程发送到另一个进程,并从内核发送到该进程。在某些错误情况下(访问错误的内存地址,总线错误,浮点错误等)发送信号,并通知用户应用程序(定时器到期,子进程完成,IO准备就绪...)。

2020-09-30 13:56:36 42 2

原创 YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统

Yocto ,是一个开源社区。它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (32 & 64 bit)硬件体系架构。 Yocto Project™是一个开源的协作软件,提供模板、工具和方法帮你创建定制的 Linux 系统和...

2020-09-30 13:42:46 111 1

原创 Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups

要在Linux中创建新进程,我们可以使用fork(2)或clone(2)系统调用。我们使用fork(2)创建一个带有单独内存映射的新子进程(使用CoW),我们使用clone(2)创建一个与其父级共享资源的子进程。克隆的一种用途是实现多线程,另一种用途是实现名称空间。 使用cgroups可以限制进程...

2020-09-30 13:10:45 56 2

原创 Linux IO复用:select、poll、epoll的理解与对比

Linux(实际上是Unix)的一个基本概念是Unix / Linux中的所有内容都是文件的规则。每个进程都有一个文件描述符表,该表指向文件,套接字,设备和其他操作系统对象。与许多IO源一起使用的典型系统具有初始化阶段,然后进入某种待机模式–等待任何客户端发送请求并对其进行响应

2020-09-30 09:37:10 58 9

翻译 Linux内核开发:内核模块参数

在本文中,我们将向模块添加参数。使用参数,您可以在加载模块时访问模块全局变量,并在运行时已加载模块时访问模块全局变量。

2020-09-30 09:10:37 57 0

翻译 Linux内核开发:创建proc文件并与用户空间接口

使用procfs(/ proc)文件创建用户空间应用程序的第一个界面

2020-09-30 08:56:48 136 1

翻译 Linux内核:网络过滤器简介与示例代码

网络过滤是Linux内核中很好的基础结构,它使我们能够过滤和操作网络堆栈中的数据包。您可以构建用于防火墙过滤的网络过滤器,记录数据包,加密/解密等等。

2020-09-30 08:40:20 51 0

翻译 Linux内核:了解Linux内核抢占

在配置Linux内核时,我们可以设置一些影响系统行为的参数。您可以使用不同的优先级,调度类和抢占模型。了解并选择正确的参数非常重要。在这篇文章中,我将介绍不同的抢占模型,以及每种模型如何影响用户和内核行为。

2020-09-30 08:28:12 117 13

原创 Net-snmp开发流程:MG-SOFT套件生成C语言snmp set/get代码

C语言Net-snmp开发流程:实现SNMP set/get RToax 2020年9月 >参考资料《深入理解net-snmp书籍》。 >本文提供编写&编译MIB文件的法、提供使用net-snmp工具开发代码、测试程序的方法。 1. net-snmp简介 1.1. 操作...

2020-09-29 16:01:16 96 1

转载 Linux内核:进程上下文切换

都知道操作系统的一个重要功能就是进行进程管理,而进程管理就是在合适的时机选择合适的进程来执行,在单个cpu运行队列上各个进程宏观并行微观串行执行,多个cpu运行队列上的各个进程之间完全的并行执行。进程管理是个复杂的过程,例如进程的描述、创建和销毁、生命周期管理、进程切换、进程抢占、调度策略、负载均...

2020-09-29 13:10:03 89 2

翻译 GNS3 Windows安装

GNS3 是一个图形化的网络拓扑逻辑模拟工具。通过它可以模拟和配置各种设备包括简单到普通的工作站以及功能强大的 CISCO 路由器,提供了一个 IOS 仿真器以及一个 PIXOS 仿真器用来模拟 CISCO PIX 防火墙。

2020-09-29 09:05:27 90 6

原创 Linux指令大全

https://wangchujiang.com/linux-command/hot.html ab - Apache服务器的性能测试工具 accept - 指示打印系统接受发往指定目标打印机的打印任务 ack - 比grep好用的文本搜索工具 alias - 定义或显示别名。 apac...

2020-09-29 08:29:17 57 0

原创 libevent的两个服务端、客户端示例(C语言)

libevent的 API提供一种机制,在特定事件上的文件描述符或达到超时后发生时执行的回调函数。此外,由于信号或常规超时,libevent还支持回调。libevent旨在替换事件驱动的网络服务器中的事件循环。应用程序只需要调用 event_dispatch(),然后动态添加或删除事件,而无需更改...

2020-09-28 17:04:57 199 1

原创 什么是RAID(独立磁盘冗余阵列)?

RAID是用于提高数据存储性能和/或可靠性的技术。缩写代表较旧且使用较少的独立驱动器冗余阵列或廉价磁盘冗余阵列。RAID系统由两个或多个并行工作的驱动器组成。这些可以是硬盘,但也有一种趋势是将技术用于SSD(固态硬盘)。有不同的RAID级别,每种级别针对特定情况进行了优化。这些没有由行业组织或标准...

2020-09-28 13:37:04 145 0

原创 网络合作伙伴通信协议指南:NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS

http://www.dingdean.com/company/img/Protocol_Layer.pdf http://www.dingdean.com/company/img/Protocol_Layer.pdf

2020-09-28 13:17:31 43 0

转载 Cgroups是什么

原文地址:https://www.cnblogs.com/lisperl/archive/2013/01/14/2860353.html 作者:王喆锋 zhefwang@gmail.com(侵删) Cgroups是什么? Cgroups是control groups的缩写,是Linux内...

2020-09-28 08:45:46 65 1

原创 DPDK lcore学习笔记

1. DPDK核绑定的全局概览 DPDK核绑定的相关函数,都集中在rte_eal_init()函数中调用: 其中主要分为六部分: 检测所有的cpu。 解释核绑定相关参数。 主线程的核绑定。 中断处理线程的创建 副线程的创建。 线程启动和等待。 注意: 本文中,cpu所指的是机器上的...

2020-09-28 08:44:20 90 0

翻译 Valgrind快速入门指南

Valgrind工具套件提供了许多调试和性能分析工具,可帮助您使程序更快,更正确。这些工具中最流行的称为Memcheck。它可以检测到许多与内存有关的错误,这些错误在C和C ++程序中很常见,并且可能导致崩溃和不可预测的行为。

2020-09-28 08:42:21 68 2

翻译 SPDK:存储性能开发套件(Storage Performance Development Kit)介绍

SPDK的基础是用户空间,轮询模式,异步,无锁的NVMe驱动程序。这提供了零拷贝,高度并行的访问,可从用户空间应用程序直接访问SSD。该驱动程序被编写为具有单个公共标头的C库。SPDK还提供了完整的块堆栈作为用户空间库,该库执行与操作系统中的块堆栈相同的许多操作。这包括统一不同存储设备之间的接口,...

2020-09-28 08:41:56 214 4

转载 MongoDB 教程 | 菜鸟教程

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

2020-09-27 21:01:07 83 2

翻译 模式搜索的KMP算法详解与C语言代码实现

Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。

2020-09-27 20:50:06 65 1

翻译 关于布隆过滤器的所有信息:利用Hash实现的索引方案

如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据...

2020-09-27 20:13:30 65 2

转载 全面认识高并发:高性能、高可用、高扩展

高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。

2020-09-27 19:47:33 288 1

翻译 TCP / IP攻击:ARP缓存中毒的基本原理、TCP序列号预测和TCP重置攻击

解释ARP缓存中毒的基本原理 https://www.thegeekstuff.com/2012/01/arp-cache-poisoning/ 假设“ A”和“ B”是非常好的朋友,“ A”与“ B”共享他的所有秘密。 现在,如果一个人“ C”进入并假冒“ B”。你能想象会发生什么吗?是的...

2020-09-27 18:05:02 110 1

原创 TCP流量控制和滑动窗口

目录 TCP流量控制和滑动窗口 什么是TCP滑动窗口?它是如何工作的? 快速发送器,慢速接收器 TCP滑动窗口 TCP流量控制和滑动窗口 https://www.ibm.com/support/knowledgecenter/en/SSGSG7_7.1.0/com.ibm.itsm...

2020-09-27 17:58:48 67 3

原创 负载均衡器如何在服务器之间分配客户端流量?

https://kemptechnologies.com/load-balancer/load-balancing-algorithms-techniques/ 有许多技术和算法可用于智能地平衡服务器池之间的客户端访问请求。选择的技术将取决于所请求的服务或应用程序的类型以及请求时网络和服...

2020-09-27 17:46:34 79 0

原创 数据结构可视化网址

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html Data Structure Visualizations Currently, we have visualizations for the following da...

2020-09-27 13:14:34 59 0

翻译 通过零拷贝进行有效的数据传输(java、c)

许多Web应用程序提供大量的静态内容,这相当于从磁盘上读取数据并将完全相同的数据写回响应套接字。该活动似乎需要较少的CPU活动,但效率较低:内核从磁盘读取数据并将其跨内核用户边界推送到应用程序,然后应用程序将其跨内核用户边界推送回写入插座。实际上,该应用程序充当了效率低下的中介,将数据从磁盘文件获...

2020-09-27 13:03:07 81 1

转载 搞懂Linux零拷贝,DMA

磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效地减少磁盘的访问次数。

2020-09-27 12:50:50 136 1

原创 DELL戴尔服务器RAID磁盘阵列默认识别更换后的硬盘

如果没有默认设置BIOS启动,请先配置BIOS启动,参见下文: 《UEFI 引导与 BIOS 引导》 《如何部署一台DELL虚拟化服务器:CentOS7.4系统,虚拟化技术》对BIOS的设置有介绍。 1.启动界面按ctrl+R 进入如下界面: 2.按ctrl+N选择进入控...

2020-09-25 11:29:56 82 0

原创 Linux协议栈:基于ping流程窥探Linux网络子系统,及常用优化方法

初识 Linux 网络栈及常用优化方法 RToax 2020年9月 初识 Linux 网络栈及常用优化方法 1. 文章简介 基于 ping 流程窥探 Linux 网络子系统,同时介绍各个模块的优化方法。 2. ping 基本原理 Client 端发送 ICMP ECHO_REQUEST...

2020-09-25 09:00:44 98 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/syste...

2020-09-23 15:50:52 222 0

原创 FD.io VPP环境下运行用户应用程序教程

FD.io VPP环境下运行用户应用程序教程 RToax 2020年9月 相关文章:《FD.io VPP利用iperf3进行UDP灌包测试-英特尔X520万兆网卡》 1. VPP简介 VPP是思科矢量数据包处理(VPP)技术的开源版本:一种高性能的数据包处理协议栈。具体介绍请阅读相关文档,此...

2020-09-23 13:35:18 140 1

转载 Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO

MSS 是 TCP 数据段每次能够传输的最大数据分段的长度。为了达到最佳的传输效能,TCP 协议在建立连接的时候通常要协商双方的 MSS值,这个值 TCP 协议在实现的时候往往用 MTU 值代替( MSS = MTU - IP 数据包包头大小20Bytes - TCP 数据段的包头大小20Byte...

2020-09-23 11:24:39 658 5

翻译 使用DPDK打开Open vSwitch(OvS) *概述

本文概述了带有数据平面开发套件(OvS-DPDK)(高性能,开源虚拟交换机)的Open vSwitch *,并链接到进一步深入探讨各个OvS-DPDK功能的其他技术文章。本文是为希望了解有关DPDK集成的OvS用户编写的。 注:用户可以下载的zip文件OVS主分支或2.6分支,以及安装步骤的主分...

2020-09-23 10:29:04 152 0

转载 Redis缓存持久化:RDB持久化和AOF持久化

突然挂了!Redis缓存都在内存中,这下完了! 来源 | 编程技术宇宙 作者 | 轩辕之风O 我是Redis,一个叫Antirez的男人把我带到了这个世界上。 “快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我。 慢慢睁开眼睛,原来旁边是MySQL大哥。 “我怎么睡着了?” “嗨,你刚才是不是出...

2020-09-22 12:51:27 56 6

翻译 C10K问题:是时候让Web服务器同时处理一万个客户端了

是时候让Web服务器同时处理一万个客户端了,您不觉得吗?毕竟,网络现在是一个很大的地方。 而且计算机也很大。您可以以1200美元左右的价格购买带有2 GB RAM的1000MHz机器和1000Mbit / sec以太网卡。我们来看-在20000个客户端上,每个客户端分别为50KHz,100Kby...

2020-09-22 08:56:48 104 0

原创 DPDK跟踪库:trace library

DPDK笔记 DPDK 跟踪库 RToax 2020年9月 跟踪库 1. 总览 跟踪是一种用于了解正在运行的软件系统中发生了什么的技术。用于跟踪的软件称为跟踪器,从概念上讲它类似于磁带记录器。记录时,放置在软件源代码中的特定检测点会生成事件,这些事件将保存在巨型磁带上:跟踪文件。然后,...

2020-09-21 18:35:52 88 2

提示
确定要删除当前文章?
取消 删除