The Linux Storage Stack Diagram】的更多相关文章

这是一个描述非常好的存储栈,版本为:Linux Storage Stack Diagram v4.10,我在这里转载下图片,可以提升大家对存储栈的理解. https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram https://www.thomas-krenn.com/de/wikiDE/images/7/72/Linux-storage-stack-diagram_v4.10.svg blk-mq(mq就是多队列的意思),…
相关文章: 如何提高Linux下块设备IO的整体性能?…
https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram…
http://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/ Jun 22, 2016 • packagecloud Tags: packagecloud linux kernel networking optimization tuning monitoring TL;DR This blog post explains how computers runn…
https://www.coverfire.com/articles/queueing-in-the-linux-network-stack/ Queueing in the Linux Network Stack http://blog.jobbole.com/62917/ [A slightly shorter and edited version of this article appeared in the July 2013 issue of Linux Journal. Thanks…
整理一些杂乱的内容.以下x86架构. Linux 内核栈大小 内核栈大小是固定的,默认为8k,曾经有选项可以设置为4k栈.由于大小固定,申请过大的栈内存,或者函数调用层次过深,都可能导致栈溢出. 关注默认4k还是8k栈,社区曾有过长时间讨论. 其中8k栈的缺点如下: 浪费内存. 由于内核4k分页,要创建一个内核栈就需要申请2块连续的4k页.当内存碎片严重,尤其内存紧张的时候,申请8k的连续内存,要比4k困难的多. 但貌似4k栈带来的麻烦更大,内核中许多bug都由4k栈太小,发生溢出导致的. 因此…
Overview 从宏观的角度来看,一个packet从网卡到socket接收缓冲区的路径如下所示: 驱动加载并初始化 packet到达网卡 packet通过DMA被拷贝到内核中的一个ring buffer 产生一个硬件中断,让系统知道已经有个packet到达内存 驱动会调用NAPI启动一个poll loop,如果它还没启动的话 系统的每个CPU上都有一个ksoftirqd进程,它们都是在系统启动的时候就已经注册了的.ksoftirqd进程会调用NAPI的poll函数从ring buffer中将p…
2D图形架构 早期Linux图形系统的显示全部依赖X Server,X Client调用Xlib提供的借口向 X Server发送渲染命令,X Server根据 X Client的命令请求向硬件设备绘制图形,X Client与X Server之间通过X11协议通讯.通过这种方式,X Server屏蔽了所有的硬件差异,保证同一个X程序能够在不同的硬件设备上运行. X Server需要与多种多样的硬件打交道,每个硬件提供自己的DDX驱动程序,X Server最后调用DDX的接口将图形发送给硬件设备.…
https://www.suse.com/documentation/sles11/book_sle_tuning/data/part_tuning_kernel.html http://blog.csdn.net/maimang1001/article/details/34941471 https://www.suse.com/documentation/sles11/book_sle_tuning/data/sec_tuning_network_buffers.html http://dir…
通过本文你会清楚知道 fsync().fdatasync().sync().O_DIRECT.O_SYNC.REQ_PREFLUSH.REQ_FUA的区别和作用. fsync() fdatasync() sync() 是什么? 首先它们是系统调用. fsync fsync(int fd) 系统调用把打开的文件描述符fd相关的所有缓冲元数据和数据与都刷新到磁盘上(non-volatile storage) fsync() transfers ("flushes") all modifie…
http://www.actionsky.com/docs/archives/171  2016年5月6日  黄炎 近期在一些简单的sysbench IO测试中, 遇到了一些不合常识的测试结果. 从结果看, 虽然不是有实际意义的测试结果, 但探索过程中, 利用到了Systemtap进行观测(动态追踪), 可在其他分析中借用. 目录 1 测试环境准备 2 现象1 2.1 步骤1 2.2 结果1 2.3 分析1 2.4 插曲1 2.4.1 观测工具使用不当带来测试偏差 2.4.2 使用另一观测工具用…
Almost one year ago, I checked how different cache settings affected KVM storage subsystem performance. Results were very clear: to obtain good I/O speed, you had to use the write-back or none cache policies, avoiding the write-through one. However,…
有本事就出来,没本事就当鳖! 假设让我回答关于进程栈,线程栈的问题,仅仅要问题不笼统,仅仅要问题明白.我会一五一十地回答,正确率上九成,然而,可悲的是,问题往往他妈的都不是非常明白,因此,游戏到此结束.! 艹.可是假设给我一个问的机会.我会问以下一个问题,记住.使出你拉屎的劲来回答(该问题足够糙.不必太当回事,重要的东西在以下-): UNIX/Linux的stack在大多数平台是向下扩展的(注意,我已经告诉事实了.我并没有问...是怎样扩展的,这是能够背诵下来并朗读出来的),在一个运行流调用了一…
−Table of Contents Journey to the Center of the Linux Kernel: Traffic Control, Shaping and QoS 1 Introduction 2 Motivation 3 The basics of Traffic Control 3.1 First contact 3.2 Netfilter MARK 3.3 Two classes in a tree 3.4 Connecting the marks to the…
访问Hard Drive 使用-hda –hdb qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 2048 -hda ubuntutest.img -hdb ubuntutest1.img -boot c -vnc :19 -net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=no 访问CD-ROM/DVD-ROM 使用-cdrom 如果想直接挂载Host机器上的CD…
I researched a lot about storage system classes given at good universities this year. This had two reasons: The first was thispost of a researcher at NetApp, about the missing of a good storage or file system class book and secondly our own storage s…
在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据时,优先使用数组.数组可以通过下标直接访问(即随机访问),正是由于这个优点,数组无法动态添加或删除其中的元素,而链表弥补了这种缺陷.首先看一下C风格的单链表节点声明: // single list node define typedef struct __ListNode { int val; st…
Linux Essentials for Delphi Developers   There is currently no way using Delphi to target Linux. Long ago there was a thing called Kylix that worked on one version of RedHat Linux, barely, back in the 1990s. But in the Community road-map, targeting a…
本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端) (4)QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(接收端) 1. Linux 网络路径 1.1 发送端 1.1.1 应用层 (1) Socket 应用层的各种网络应…
Linux就这个范儿 第13章 打通任督二脉 0111010110……你有没有想过,数据从看得见或看不见的线缆上飞来飞去,是怎么实现的呢?数据传输业务的未来又在哪里?在前面两章中我们学习了Linux网络方面的各种工具,打造了形形色色的网络服务.然而我们并不满足于仅仅知道这些表面的知识,还希望深入了解它们的底层实现.那就来吧,打通任督二脉,探究不同类型的网络以及隐藏在网络后面的世界. 13.1 了解网络驱动工欲善其事,必先利其器.二十年前我们还走在狭窄的乡间小道开着信息牛车.时至今日,信息高速公路…
    在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲.队列有关的参数.网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不知其所以然,每次照抄过来后,可能很快就忘记或混淆了它们的含义.本文尝试总结TCP队列缓冲相关的内核参数,从协议栈的角度梳理它们,希望可以更容易的理解和记忆.注意,本文内容均来源于参考文档,没有去读相关的内核源码做验证,不能保证内容严谨正确.作为Java程序员没读过内核源码是硬伤. 下面我以server端为视角,从 连接建…
作者:阿里技术保障锋寒 原文:https://yq.aliyun.com/articles/4252 摘要: 本文尝试总结TCP队列缓冲相关的内核参数,从协议栈的角度梳理它们,希望可以更容易的理解和记忆.注意,本文内容均来源于参考文档,没有去读相关的内核源码做验证,不能保证内容严谨正确.作为Java程序员没读过内核源码是硬伤. 在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲.队列有关的参数.网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不…
前面我们的分析中重点关注正常的数据流程,这一小节关注如果有异常,那么流程是怎么走完的呢? 1)创建新任务时kcached_job申请不到 2)读写命中时cache块为忙 3)系统关机时处理,系统开机时处理,系统异常掉电后的处理 首先来看第1种情况,申请kcached_job是在函数flashcache_lookup中, 543/* 544 * dbn is the starting sector, io_size is the number of sectors. 545 */ 546stati…
程序员练级攻略:Linux系统.内存和网络 Linux 系统相关 Red Hat Enterprise Linux 文档 . Linux Insides ,GitHub 上的一个开源电子书,其中讲述了 Linux 内核是怎样启动.初始化以及进行管理的. LWN's kernel page ,上面有很多非常不错的文章来解释 Linux 内核的一些东西. Learn Linux Kernel from Android Perspective ,从 Android 的角度来学习 Linux 内核,这个…
转自:https://segmentfault.com/a/1190000008836467 本文将介绍在Linux系统中,数据包是如何一步一步从网卡传到进程手中的. 如果英文没有问题,强烈建议阅读后面参考里的两篇文章,里面介绍的更详细. 本文只讨论以太网的物理网卡,不涉及虚拟设备,并且以一个UDP包的接收过程作为示例. 本示例里列出的函数调用关系来自于kernel 3.13.0,如果你的内核不是这个版本,函数名称和相关路径可能不一样,但背后的原理应该是一样的(或者有细微差别) 网卡到内存 网卡…
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, 驱动开发中设计到的硬件: * 数字电路知识 * ARM硬件知识 * 熟练使用万用表和示波器 * 看懂芯片手册和原理图 4, linux内核源代码目录结构: * arch/: arch子目录包括了所有和体系结构相关的核心代码.它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel c…
我收藏的技术知识图(每张都是大图) HTML5Linux/Unix系统设计思想读书笔记 LinuxMVCJava线程MVCSpring MVCCSS3Nginx架构VimCliCommandsPHP知识卡Linux安全知识表 JDK JVM机会HTML5介绍开源协议HTML5移动UED用户体验IT常识Linux系统调用列表 YII架构的典型流程Android系统架构一致性Hash算法CouchDBCss知识表CSS位置如何获取的从MySQL到MongoDB前端工程师知识系Git命令分布式Java…