9 吾皇斯巴达

尚未进行身份认证

我要认证

存储研发工程师

等级
TA的排名 23w+

性能指标:队列深度、IOPS与时延

队列深度,更显然地说是指未完成的(outstanding)的I/O数目,或指测试工具中的"threads"表示的数目。这是性能测试的一个关键指标。具体地讲,这些概念是指测试工具一次下发的最大I/O数目,而不管测试工具、OS等的限制。对于测试工具(如vdbench)来讲,一个请求从主机下发到存储,存储完成后返回到主机,这才算是这个I/O的一个完整周期。对接深度是指主机始终维持的,未返回到主机中的请求数目。在深入理解之前,需要先理解IOPS和时延(latency)。按定义来讲,每个“thread”是指一次

2020-06-11 16:14:47

Designing Data-Intensive Applications翻译

一. 可用性, 可扩展性, 可维护性应用程序现在的应用程序已经从计算密集型转变为数据密集型. CPU的算力已经很少是这些应用程序的限制条件,更多的是所需处理的数据的数量, 复杂度以及数据变化的速度.…考虑一下数据系统(Data System)通常我们认为数据库, 队列, 缓存,等等是一些不同类别范围的概念, 尽管可能数据库和消息队列看起来很多相似的地方-- 例如它们都用于某时存储一些数据-...

2020-03-08 22:47:32

数据包的超时管理:TTL

TTL的起源在各种需要进行数据包传送的场景下,数据包一般都有一个超时管理机制:Time To Live,即TTL。为什么需要这么一个机制呢?举个例子,在IP协议发送数据包的时候,可能会经过多个路由转发环节。若其中的某个环节出了问题,就可能造成这个数据包一直在数个路由器中反复转发。这样既不能正确到达目的地,也无法及时释放这些资源。如何来避免这种情况发生呢?给每个数据包都加上一个超时时间即可,...

2020-01-10 20:54:39

事件驱动设计模式

在进行事件方面的代码编写中,Reactor设计模式是经典、重要的一种设计模式。参考【1】 《Pattern-Oriented Software Architecture, Volume 4: A Pattern Language for Distributed Computing》,第11章《Reactor》【2】 《Redis设计与实现》 第12章 《事件》【3】 《设计模式》...

2019-12-24 11:19:10

神奇的位操作们

位操作是一种灵活、强大的编程技巧。最简单的使用场景,是将多个字段压到一个字段中,这样可以使用更少的交互来传递更多的内容。这在LBA编址上很常见,如一个LBA应该编码进去lunId, poolId, 是否压缩,lun中逻辑地址。也常用在信息收发上:如socket中的包头,将多种信息压缩到一个头中一次收发。此处需要注意的是位的偏移长度,以及在实现的时候需要注意将每个字段强转为待压字段的长度单位...

2019-12-23 19:19:35

函数的执行、调用、堆栈与递归

前提先需要简要叙述一下一个C程序的运行流程。我们知道基本的冯诺依曼计算机体系:CPU–内存–外存。CPU中具有一些寄存器可以用来暂存要操作的对象,并存储处理结束后的数据。程序编译完成之后,当内核通过exec函数来执行C程序是,在调用main前会先调用一个特殊的启动例程,该例程将会将段页式内存管理数据总线、控制总线参考【1】 UNIX环境高级编程【2】 汇编语言,第三版...

2019-12-17 16:30:39

C/C++基础:函数/指针/多态

变量内存地址与指针我们知道内存是一块能够存储数据的区域。从本质上来讲,存储器被划分为若干个存储单元,每个存储单元都有一个固定的编号,即内存地址。计算机的最小信息单位为1bit,但是作为内存的最小处理单位是字节,即8bit(【1】p4)。变量的存取方式int a = 100;如上所示,在声明了一个int型的变量。此时,编译器会为其申请一块int大小的内存区域,并在这块内存区域中放入值100...

2019-12-17 11:06:52

分布式存储系统中重删功能的设计

什么是重删一般有哪几种重删设计思路:在线重删,各自优缺点离线重删,各自优缺点对于全闪的特性(磨损)重删设计方案的选择无重删时的I/O路径是什么样的数据存取位置的管理:元数据有重删时I/O路径是什么样的重删的原理:管理方式的变更:需要增加一个哈希值-物理地址的元数据表来管理由重删功能引发的逻辑地址-物理地址表项的变更: 一个逻辑地址现在可以对应多个物理地址插入流程,非重复数据...

2019-12-12 11:39:12

数据结构与算法题目(一): 链表相关

链表是最基础,也是最重要的数据结构.在实际工作中,链表及链表形式的队列是最常用的任务队列模式; 在面试中, 由于链表相关的题目都可以用少量的代码写出来, 而其指针指来指去又比较复杂, 可以全面考虑应聘者的思路的敏捷性和考虑问题的鲁棒性, 所以面试中经常出现机试或手写链表相关的题目.笔者认为, 链表相关的题目主要要考虑的其实就是节点的连接性.主要考虑有以下几种操作:遍历插入删除一. ...

2019-12-08 21:55:22

C++语言学习

1.类与对象, 构造函数与析构函数的设计思想,static的意义? 静态类, 静态变量, 静态对象

2019-12-07 01:07:37

进程间同步与互斥

[2019 百度 计算与存储系统研发工程师笔试] 描述只读锁和读写锁的互斥关系描述linux文件系统读写IO流程,从vfs到块设备层。

2019-12-07 01:05:29

实现一个任务调度系统

在看RAID代码的时候,对于多种不同的后台任务,采用了不同优先级的处理方法.而对于其中的某个后台任务(例如巡检), 又采用了一种动态的速率调整的策略. 这种调度的实现是很有意思的, 不禁想着参考这种实现方式,来自己实现一个任务调度系统....

2019-12-05 22:33:39

OJ输入方法

一些OJ平台上的输入是命令行形式输入的,需要自己写输入函数.记录如下:输入形式为:1 2 3 4 52import java.util.Scanner;public class Main{ public class ListNode{ int var; ListNode next; ListNode(int var){ ...

2019-12-03 23:42:37

进程间通信

问题收集为什么需要专门考虑进程间通信这一问题?解决这个问题的发展历史是什么样的?进程间通信的一般处理方法有哪些?都是如何实现的?各自的优劣在哪里?适用场景在哪里?问题的引出:如何使用户态的进程进行通信众所周知,用户态的进程相互隔离,都具有独立的地址空间,因此无法进行直接通信,需要进入内核态进行访问。此处的访问,其实本质上是虚拟地址和物理地址之间的重新映射的关系。当然实现起来是十分复...

2019-11-15 23:27:26

Linux内存管理

问题收集若能申请到内存,则直接申请;若无可用内存,则加入链表等待的机制是否存在?基于1的需求,是否能够通过上下文传递来更加精细化地管理整个结构体的内存分配情况?Linux是否有类似的实现?Linux的内存管理...

2019-11-15 23:13:57

汇编学习:从环境配置到函数调用

Mac下的环境配置安装HomeBrew;使用homebrew安装DOSBox:brew install DOSBox;在某个位置创建一个文件夹用于存放调试程序,假设放到/User/DOSBox下,下载DEBUG.EXE, LINK.EXE,MASM.EXE, LIB.EXE,将其放入其中;打开DOSBox,挂载个人文件夹:mount c /User/DOSBox;dir可看到当前目录...

2019-11-13 23:46:42

网络是怎样连接的

问题收集为什么要有路由器?路由器的本质功能是什么?如果没有路由器如何收发包?路由器是如何收发包的?数据包在从用户到服务器,中间经历了哪几个部分?集线器、交换机和路由器的作用分别是什么?区别有哪些?网关是什么?作用是什么?是如何实现的?IP表与MAC表的内容有哪些?增删改查的时机有哪些?以太网是什么?端口号的作用是什么?是否有上限?是否固定?如何与全互联网进行约定?TCP协议的握手标...

2019-11-10 17:38:36

计算机是如何运行的:从CPU到内存管理

CPU的组成内存的组成内存的硬件结构内存的物理地址编码内存的寻址内存管理:分段什么是内存分段为什么发明了分段式内存管理分段内存管理是如何实现的如何使用分段内存管理CPU如何进行内存寻址CS:IP结构:内存管理:分页什么是内存分页页框与寻址分页管理的好处是什么分页管理与分段管理的区别是什么?CPU如何对一个分页管理的内存系统进行寻址?中断: 缺页中断什么是缺页中...

2019-11-03 19:54:04

《操作系统精髓与设计原理》第七章:内存管理

基本概念在单道程序设计中(即同时只允许一个进程在处理器中执行),内存被分为两个部分,一部分供操作系统使用,一部分供当前执行的用户程序使用。而在多到程序设计中,CPU采用某些调度方式允许多个进程在一定意义上同时执行(当然在实际的围观角度来看并不是同时执行),因此用户程序使用的内存区域需要被进一步细分管理,从而满足多个进程的存放要求。这便叫内存管理。1.内存管理需要满足哪些要求?主要包括以下几...

2019-06-23 21:13:10

虚拟内存/用户空间与内核空间/MMap与MUnmap

在涉及到IO的开发中,我们经常看到零拷贝(zero copy)、内存映射(memroy map, 以下简称mmap)等技术被用于提高IO效率,本文将介绍这两种技术的基本原理,说明它们是如何提高IO效率的。相关概念Zero copy和mmap涉及到操作系统中的一些基本概念,在了解它们的工作机制前,我们先来复习一下这些概念。虚拟内存(virtual memory space)进程对内存...

2019-06-22 15:11:11

查看更多

勋章 我的勋章
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。