自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(129)
  • 资源 (2)
  • 收藏
  • 关注

转载 队列深度对磁盘IOPS的影响

增加队列深度,可以看到IOPS不会随着队列深度的增加而一直增加,达到一定值后会有所下降。

2022-07-21 10:09:31 1163

转载 ioctl函数详细说明

本函数影响由fd参数引用的一个打开的文件。#include<unistd.h>intioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高速缓存操作路由表操作流系统下表列出了网络相关ioctl请求的request参数以...

2022-03-24 16:50:18 857

转载 Linux系统物理CPU、逻辑CPU和CPU核数的区别

㈠ 概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的 信息内容分别列出了process...

2022-03-17 10:13:15 552

转载 通用平台下突破时延短板 XSKY利用DPDK增强Ceph网络效能

业界共识,网络层是分布式存储 "性能木桶的最短板"。在存储领域的概念中,一般有两张网络--用户应用与存储对接的"接入网络"和存储系统内部交换数据的"数据分布网络"。传统存储的"数据分布网络"通常用SAS总线或Infiniband网络实现,牺牲的是水平扩展能力和通用硬件特性,换来较低的时延和相对较少的中央处理器负担。而在主流的分布式存储系统中,为了整个集群的硬件通用一致性,和接入部分一样,通常采用基于TCP/IP的以太网进行数据分布工作。基于Linux内核的通用TCP/IP协议栈在10Ge以上的高带宽条件下,

2022-03-11 17:26:09 524

转载 DPDK 全面分析

高性能网络技术#随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN 分层的网络结构,无不体现出这种创新与融合。这在使得网络变得更加可控制和成本更低的同时,也能够支持大规模用户或应用程序的性能需求,以及海量数据的处理。究其原因,其实是高性能网络编程技术随着网络架构的演进不断突破的一种必然结果。C10K 到 C10M 问题的演进#如今,关注的更多是 C10M 问题(即单机 1

2022-03-11 14:53:06 2400 1

转载 网卡工作原理

1、分析网卡的工作原理即是分析网卡的驱动程序2、为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的设备进行抽象并定义了一个统一的概念,称之为接口3、一个网络接口被看作是一个发送和接收数据包的实体。4、对于每个网络接口,都用一个net_device的数据结构来表示。5、所有被发送和接收的包都用数据结构sk_buff表示6、要发送数据时,网络系统将分局系统路由表选择相应的网络接口进行数据传输;当接收数据包时,通过驱动程序登记的中断服务程序进行数据的接口处理。7、Linux网络驱动程序从上到下

2022-03-11 14:34:48 2588

转载 内核模块加载与卸载命令

Linux操作系统中模块操作相关命令解释lsmod 查看已经安装好的模块, 也可以查看/proc/modules文件的内容. 实际上,lsmod读命令就是通过查看/proc/modules的内容来显示模块信息的.查看某个模块是否安装[root@localhost ~]# lsmod | grep "mii"mii 9409 1 pcnet32modinfo 显示模块信息 1 2 3 4 5 6 .

2022-03-10 10:48:24 1437

转载 网卡bonding模式 - bond0、1、4配置

网卡bonding简介网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡,配置完毕后,所有的物理网卡的ip和mac将会变成相同的。多网卡同时工作可以提高网络速度,还可以实现网卡的负载均衡、冗余。bonding模式1round-robin(mode=0)轮转策略,轮流在每一个slave网卡上发送数据包,提供负载均衡和容错能力。 2active-backup(mode=1)主备策略,只有一个slave被激活,只有当active的slave的接口down时,才会...

2022-03-09 20:47:00 7290

转载 socket编程学习(addr设置)

sockaddr结构体struct sockaddr{  sa_family_tsa_family; //地址族,最常用的是"AF_INET"(IPV4)和"AF_INET6"(IPV6);   char sa_data[14];   //包含套接字中的目标地址和端口信息;};sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了sockaddr_in 结构体sockaddr_in结构体解决了sockaddr的缺陷,把port和addr 分开储存在两...

2022-03-03 11:21:27 2424

原创 VM虚拟机中Linux扩展磁盘空间的方法

2022-02-15 15:30:15 7921 7

转载 rdma 编程详解

1.相关名词解释1.1 rdma-core指开源RDMA用户态软件协议栈,(用户空间的驱动)包含用户态框架、各厂商用户态驱动、API帮助手册以及开发自测试工具等。rdma-core在github上维护,我们的用户态Verbs API实际上就是它实现的。https://github.com/linux-rdma/rdma-core1.2 kernel RDMA subsystem指开源的Linux内核中的RDMA子系统,(内核空间的驱动)包含RDMA内核框架及各厂商的驱动。RDMA子系统.

2022-02-14 18:40:43 2654

转载 【RDMA】ibv_poll_cq()

描述ibv_poll_cq()从完成队列(CQ)轮询WC(工作完成),非阻塞函数。[工作完成] 表示 WQ(工作队列)中的WR(工作请求) 以及与CQ相关联的所有已发布到该工作队列的未发出信号的WR(工作请求)均已完成。(A Work Completion indicates that a Work Request in a Work Queue, and all of the outstanding unsignaled Work Requests that posted to that W

2022-02-10 10:38:16 1288

转载 关于centos7 No route to host 报错的解决方法。

如图所示:centos7 No route to host 报错,解决方法如下:使用 ping 192.168.1.113 结果是正常的,其实出现上面的这种原因是防火墙没有关闭。centos7 和centos6防火墙是不一样的:centos7是 firewallcentos6是 iptablesfirewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)启动一个服务:systemctl start fir..

2022-01-27 15:53:58 14109 1

转载 【linux】查看Linux系统版本信息的几种方法

一、查看Linux内核版本命令(两种方法):1、cat /proc/version2、uname -a二、查看Linux系统版本的命令(3种方法):1、lsb_release -a,即可列出所有版本信息:这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。2、cat /etc/redhat-release,这种方法只适合Redhat系的Linux:[root@S-CentOS home]# cat /etc/redhat-rele

2022-01-26 00:02:56 135240 1

原创 build error: ‘ParseCommandLineFlags‘ is not a member of ‘google‘

将google修改为gflags即可#include <gflags/gflags.h>int main(int argc, char* argv[]) { gflags::ParseCommandLineFlags(&argc, &argv, true); brpc::Server server; test::PerfTestServiceImpl perf_test_service_impl; if (server.AddServi...

2022-01-24 19:26:14 1350

转载 超全整理!Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试

2021-08-24 11:52:26 1581

原创 5G网络切片

到底什么叫5G网络切片http://www.360doc.com/content/17/0326/02/41444591_640175003.shtml一篇文章看懂,5G网络切片是什么?https://baijiahao.baidu.com/s?id=1632027918857232513&wfr=spider&for=pc

2020-09-17 20:31:35 314

转载 一句话解释IPD的核心内容

1.IPD是什么?集成产品开发(Integrated Product Development,IPD)是一套先进的、成熟的研发管理思想、模式和方法。IPD is a systematic approach to product development that achieves atimely collaboration of necessary disciplines throughout the product life cycleto better satisfy customer� ne..

2020-05-20 15:04:52 4785

转载 HTTPS实战之单向验证和双向验证

转载自:https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA原创:涛哥coding涛6月9日作者对https 解释的入目三分啊(全文太长,太懒不想看,-_-b 那就直接拉到底部看总结 )前面的文章中,提到了,https是在TCP协议与http之间加了一个控制安全传输的SSL协议,也就是说,直接运行在TCP之上的HTTP是普通的HTTP,运行在SSL/TLS上的HTTP则是HTTPS。这几个协议在计算机网络的OSI七层模型中的位置如下表所示:...

2020-05-13 17:56:12 1129

转载 CEPH可靠性的计算方法分析

在开始正文之前,首先要感谢UnitedStack工程师朱荣泽对这篇博文的大力帮助和悉心指教。本文主要针对UnitedStack公司在巴黎峰会上对Ceph可靠性的计算方法(https://www.ustack.com/blog/build-block-storage-service/)做了一个更明确的分析和阐述,供对此话题感兴趣的朋友一起来讨论、研究,文章中如果有不当之处,还请各位高人指教。什么情况下数据会丢失?这个话题的另外一种提法就是存储的可靠性,所谓存储的可靠性最基本的一点就是数...

2020-05-09 18:02:31 1268

转载 bluestore 流程解析

1.整体流程图片发自简书App图中展示了流程中的关键路径及涉及到的线程与队列。下面详细阐述工作流程。重点关注:状态切换;kv存储数据的GC时机1.1 queue_transactionsqueue_transactions是store统一的入口,各个存储引擎如filestore、kvstore、bluestore都得实现这个入口。在queue_transa...

2020-04-26 16:32:07 850

转载 Linux 查看进程消耗内存情况总结

在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗、占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些。在此之前,我们需要了解一下Linux系统下面有关内存的专用名词和专业术语概念:物理内存和虚拟内存物理内存:就是系统硬件提供的内存大小,是真正的内存,一般叫做内存条。也叫随机存取存储器(random access memory,RAM...

2020-04-26 15:42:40 605

转载 转载ceph IO切割成对象和对象名的组成

看到很多关于oid-->pgid-->osdid映射的文章。 但是 读写IO到-->oid的映射,却没有相关的文章。我认为一个完整的映射关系应该是这样的:read write IO---->oid---->pgid---->osdid 。下面我们重点研究下read write IO---->oid的映射关系。一, 读写IO...

2020-04-26 15:41:49 225

转载 Red Hat Ceph存储—《深入理解Ceph架构》

目录第1章 概览第2章 存储集群架构2.1 存储池2.2 身份认证2.3 PG(s)2.4 CRUSH2.5 I/O操作  2.5.1 副本I/O  2.5.2 纠删码I/O2.6 自管理的内部操作  2.6.1 心跳  2.6.2 同步  2.6.3 数据再平衡与恢复  2.6.4 校验(或擦除)2.7 高可用  ...

2020-04-26 15:40:22 247

转载 Linux下原生异步IO接口libaio介绍

在调研 fio的实现时,接触了libaio的使用方式。由于fio 的io engine发送及接受数据的流程是按照liaio库的方式进行的。所以初步使用了libaio。现总结如下。几点说明本文的重点在于libaio的使用方式。所以对什么是同步、异步及阻塞、非阻塞IO,请参考相应资料。比较权威的资料是Richard Stevens的“UNIXNetwork Programming Volum...

2020-04-26 15:38:54 1954

转载 IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)

当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到有...

2020-04-26 15:37:01 225

转载 Linux libaio 异步I/O简述

最近准备仔细看看innodb 异步I/O的实现,而在LINUX平台下Innodb中一般我们使用的都是libaio叫做LINUX NATIVE AIO,这有别于POSIX实现的AIO,因为以前对异步I/O并不熟悉,因为在很多LINUX 系统编程书籍上都没有介绍,而网上也是资料不多。当然其好处还是非常明显的,能够在使用O_DIRECT 打开文件的情况下,保证性能而不是消耗CPU资源在等待I/O落盘上,...

2020-04-26 15:35:38 670

转载 pread与pwrite使用

1 缘由在阅读seastar源码时发现有使用pread函数,这也是第一次认识pread函数,平时用read比较多。2 pread函数函数原型:#include <unistd.h>ssize_t pread(int fd, void *buf, size_t count, off_t offset);ssize_t pwrite(int fd, const ...

2020-04-26 15:34:20 1520

转载 Linux下原生异步IO接口Libaio的用法

Linux下原生异步IO接口Libaio的用法Posted on June 15, 2011 by Jian Zhoulibaio是linux下原生的异步IO接口。网上对其使用方法讨论较少,这里做个简单说明。libaio的使用并不复杂,过程为:libaio的初始化,io请求的下发和回收,libaio销毁。一、libaio接口libaio提供下面五个主要API函数:int io_se...

2020-04-26 15:33:20 978

转载 维护ceph的15条关键命令

1、ceph osd tree2、ceph osd df3 ceph osd dump从osdmap中获取信息4 ceph pg dump从pgmap中获取信息5 ceph pg map pg_id找到osd列表6 ceph daemon osd.x helposd_enable_op_tracker=truedebug_optracker=5/57 ceph da...

2020-04-23 11:03:45 455

转载 Red Hat Ceph存储—《深入理解Ceph架构》

目录第1章 概览第2章 存储集群架构2.1 存储池2.2 身份认证2.3 PG(s)2.4 CRUSH2.5 I/O操作  2.5.1 副本I/O  2.5.2 纠删码I/O2.6 自管理的内部操作  2.6.1 心跳  2.6.2 同步  2.6.3 数据再平衡与恢复  2.6.4 校验(或擦除)2.7 高可用  ...

2020-04-23 11:02:45 289

转载 ceph 网络模块

代码入手方式:1. osd的网络通信messenger在old.h中定义,如下图所示2. 然后查看cluster_messenger的创建。3. 再来查看internal_messenger的由来,是osd构造函数赋值的。4. 最后看看ms_cluster的创建,在osd初始化的时候创建的。以上,就是cluster_messenger...

2020-04-23 11:01:16 460 1

转载 bluestore 流程解析

1.整体流程图片发自简书App图中展示了流程中的关键路径及涉及到的线程与队列。下面详细阐述工作流程。重点关注:状态切换;kv存储数据的GC时机1.1 queue_transactionsqueue_transactions是store统一的入口,各个存储引擎如filestore、kvstore、bluestore都得实现这个入口。在queue_transa...

2020-04-23 10:57:45 1386 1

转载 CRUSH算法的原理与实现

0. 前言本文主要面向对Ceph及分布式系统有一定了解基础的同学;新入坑的读者可以先从Ceph文档官网获取基本信息。1. 背景在分布式存储系统中,数据的位置存放规则一直是研究的热门话题之一。一般来说,系统中所有角色(Clients、Servers)需要有一个统一的数据寻址算法Locator,满足: Locator(ID) -> [Device_1, Device_2, De...

2020-04-14 20:45:27 1563

转载 SSD通俗原理简介

1. 什么是SSDSSD是Solid State Drive,即固态硬盘的缩写。目前主流的SSD是使用半导体闪存(Flash)作为介质的存储设备,SSD有别于HDD(Hard Disk Drive)机械硬盘。SSD诞生于上世纪70年代,最早的SSD使用RAM,RAM掉电数据就会丢失,价格也特别贵。后来出现了基于闪存的SSD,闪存掉电之后数据不丢失,flash SSD慢慢取代了RAM SSD...

2020-04-14 20:43:47 4316 1

转载 BlueStore-先进的用户态文件系统《二》-BlueFS

简介上一篇文章中,介绍了BlueStore的诞生背景、逻辑架构以及设计思想,提到了在BlueStore中元数据都是存放在RocksDB中的,BlueStore又实现了一个轻量级的文件系统BlueFS供RocksDB读写数据。在本篇文章中将会描述BlueFS的设计缘由和设计原理。为什么要BlueFS?BlueStore使用RocksDB来管理元数据,但是RocksDB本身并不支持对裸...

2020-04-14 18:00:16 507

转载 BlueStore-先进的用户态文件系统《一》

分布式存储系统通过将数据分散到多台机器上来充分利用多台机器的资源提高系统的存储能力,每台机器上的数据存放都需要本地的单机存储系统,它是整个分布式存储系统的基础,为其提供保障。设计高性能、高可靠的分布式存储系统离不开高效、一致、稳定、可靠的本地存储系统。ceph是目前业内比较普遍使用的开源分布式存储系统,实现有多种类型的本地存储系统;在较早的版本当中,ceph默认使用FileStore作为后端存...

2020-04-14 17:54:56 436

转载 Linux下使用 tc 模拟网络延迟和丢包

1、模拟延迟传输简介netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora、Ubuntu、Redhat、OpenSuse、CentOS、...

2020-04-11 14:51:57 852

转载 结构体中最后一个成员数组定义0个元素的意义

struct MyData { int nLen; char data[0]; }; 在结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容);这种声明方法可以巧妙的实现...

2020-04-11 14:51:23 404

转载 git stash 用法总结和注意点

常用git stash命令:(1)git stashsave "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。(2)git stash list:查看stash了哪些存储(3)git stash show:显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如...

2020-04-11 14:50:46 875

RDMA 网络编程用户手册-官方材料(中文版v1.7)

RDMA 网络编程用户手册-官方材料(中文版v1.7)

2022-01-24

SPDK官方文档中文版(2019年8月版).pdf

目录 第一章 简介 1 1.1.什么是SPDK? 1 1.2.入门 1 1.3. Vagrant开发环境 3 1.4.更新日志(略) 6 第二章 概念 6 2.1. 用户空间驱动程序** 6 2.2. 来自用户空间的DMA** 7 2.3. 消息传递和并发** 9 2.4. NAND Flash SSD内部 13 2.5. 将I / O提交到NVMe设备** 15 2.5.1 NVMe规范 15 2.5.2 SPDK NVMe驱动程序I / O路径 15 2.6. 使用Vhost-user进行虚拟化I / O. 16 2.6.1 介绍 16 2.6.2 QEMU 17 2.6.3 设备初始化 18 2.6.4 I / O路径 19 2.6.5 SPDK优化 20 2.7. SPDK目录结构概述 20 2.8. SPDK移植指南 22 第三章 用户指南 22 3.1. 系统配置用户指南 22 3.1.1 IOMMU配置 22 3.2. SPDK应用程序概述 23 3.2.1 配置SPDK应用程序 23 3.3. iSCSI Target 26 3.3.1. iSCSI Target入门指南 26 3.3.2. 通过配置文件配置iSCSI Target 27 3.3.3. 通过RPC方法配置iSCSI Target 28 3.3.4. 配置iSCSI启动器 29 3.3.5. rpc配置示例*** 30 3.3.6. iSCSI 热插拔 32 3.4. NVMe over Fabrics Target 32 3.5. Vhost Target(略) 37 3.6 块设备用户指南 38 3.6.1 bdev介绍 38 3.6.2 通用RPC命令 38 3.6.3 Ceph RBD 39 3.6.4 压缩虚拟Bdev模块 40 3.6.5 加密虚拟Bdev模块 41 3.6.6 延迟vbdev模块 41 3.6.7 GPT(GUID分区表) 42 3.6.8 iSCSI bdev 43 3.6.9 Linux AIO bdev 43 3.6.10 OCF虚拟bdev 43 3.6.11 Malloc bdev 44 3.6.12 NULL bdev 44 3.6.13 NVMe bdev 44 3.6.14 逻辑卷Lvol 45 3.6.15 RAID 46 3.6.16 Passthru 46 3.6.17 Pmem 46 3.6.18 Virtio Block 47 3.6.19 Virtio SCSI 47 3.7 BlobFS(Blobstore文件系统) 48 3.7.1 RocksDB集成 48 3.7.2 FUSE插件 49 3.8 JSON-RPC方法(略) 49 第四章 程序员指南 49 4.1. Blobstore程序员指南 49 4.1.1 介绍 50 4.1.2 运作理论 50 4.1.3 设计注意事项 52 4.1.4 例子 54 4.1.5配置 54 4.1.6 组件细节 54 4.2. 块设备层编程指南 56 4.3 编写自定义块设备模块 58 4.3.1 介绍 58 4.3.2 创建一个新模块 59 4.3.3创建虚拟Bdev 60 4.4 NVMe over Fabrics目标编程指南 61 4.4.1 介绍 61 4.4.2 原语结构体 61 4.4.3 基础函数 62 4.4.4访问控制 62 4.4.5发现子系统 62 4.4.6 传输 63 4.4.7选择线程模型 63 4.4.8 跨CPU核心扩展 63 4.4.9 零拷贝支持 63 4.4.10 RDMA 63 4.5 Flash传输层 64 4.5.1 术语 64 4.5.2 使用方法 67 4.6 GDB宏用户指南 69 4.6.1 介绍 69 4.6.2 加载gdb宏 71 4.6.3 使用gdb数据目录 72 4.6.4 使用.gdbinit加载宏 72 4.6.5 为什么我们需要显式调用spdk_load_macros 72 4.6.6 以上可用的宏总结 73 4.6.7 添加新宏 73 4.7 SPDK “Reduce”块压缩算法 73 4.7.1 介绍 73 4.7.2 例子 74 4.8 通知库 78 第五章 基本信息 79 5.1 事件框架 79 5.1.1 事件框架设计注意事项 80 5.1.2 SPDK事件框架组件 80 5.1.3 应用框架 80 5.2 逻辑卷 81 5.2.1 术语 81 5.2.2 配置逻辑卷 84 5.3 矢量数据包处理(略) 86 第六章 杂项 86 6.1 介绍 86 6.2 NVMe的P2P API 86 6.3 确定设备支持 87 6.4 P2P问题 87 第七章 驱动程序 88

2022-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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