11 2022 档案

摘要:Undo日志 主要用来恢复到事务开始前的状态 更新前写入日志旧值 commit之后,前面的日志还需要吗? 分情况 1.单线程 可以清理 2.多线程 需要等到所有并行线程提交后才能(检查点机制) 静态检查点 如果这个事务很长,那么必须等待这个事务执行完才能创建新的事务,这让用户感觉已经宕机了 动态检查 阅读全文
posted @ 2022-11-30 16:03 misaka-mikoto 阅读(87) 评论(0) 推荐(0) 编辑
摘要:QEMU是一种通用的开源计算机仿真器和虚拟器。QEMU共有两种操作模式 1,全系统仿真:能够在任意支持的架构上为任何机器运行一个完整的操作系统 2,用户模式仿真:能够在任意支持的架构上为另一个Linux/BSD运行程序 具体来说,当作为机器仿真器使用时,QEMU可以通过动态代码翻译机制(dynami 阅读全文
posted @ 2022-11-30 11:48 misaka-mikoto 阅读(6648) 评论(0) 推荐(2) 编辑
摘要:脚本安装虚拟机 #!/bin/bash virt-install \ --name ubuntu20.04-server \ --cdrom ubuntu-20.04.4-live-server-amd64.iso \ --memory 4096 \ --cpu host \ --disk Imag 阅读全文
posted @ 2022-11-29 21:14 misaka-mikoto 阅读(2070) 评论(0) 推荐(0) 编辑
摘要:导语 众所周知在Linux起源之初,文件系统io栈针对机械盘进行了众多优化,包括page、cache等多种优化方式。内核采用中断的方式进行DMA将数据从内核态拷贝回用户态,再交由用户程序处理,这是机械硬盘时代的io处理方式。 而随着nvme-ssd的出现,如果再采用此种方式就会导致大量的硬盘空闲,浪 阅读全文
posted @ 2022-11-23 14:19 misaka-mikoto 阅读(1587) 评论(0) 推荐(0) 编辑
摘要:struct iovec定义了一个向量元素。通常,这个结构用作一个多元素的数组。对于每一个传输的元素,指针成员iov_base指向一个缓冲区,这个缓冲区是存放的是readv所接收的数据或是writev将要发送的数据。成员iov_len在各种情况下分别确定了接收的最大长度以及实际写入的长度。且iove 阅读全文
posted @ 2022-11-22 18:53 misaka-mikoto 阅读(702) 评论(0) 推荐(0) 编辑
摘要:ibstatus 阅读全文
posted @ 2022-11-18 14:42 misaka-mikoto 阅读(125) 评论(0) 推荐(0) 编辑
摘要:abstract 使用DPU加速Redis的异步复制,提高吞吐14%,降低时延21%。 introduction 由于redis内存读写很快,传统网络协议栈成为性能瓶颈,因此使用RDMA可以降低通信压力。但是使用RDMA只能卸载简单的操作,比如单边read和write远端内存,但是一些复杂的操作还是 阅读全文
posted @ 2022-11-08 19:59 misaka-mikoto 阅读(156) 评论(0) 推荐(0) 编辑
摘要:pipeline Redis 流水线是一种通过一次发出多个命令而不等待每个单独命令的响应来提高性能的技术。大多数 Redis 客户端都支持流水线。本文档描述了流水线旨在解决的问题以及流水线在 Redis 中的工作原理。 请求/响应协议和往返时间 (RTT) Redis 是使用客户端-服务器模型和所谓 阅读全文
posted @ 2022-11-07 21:15 misaka-mikoto 阅读(462) 评论(0) 推荐(0) 编辑
摘要:Redis集群不能保证强一致性。一些已经向客户端确认写成功的操作,会在某些不确定的情况下丢失。 产生写操作丢失的第一个原因,是因为主从节点之间使用了异步的方式来同步数据。 一个写操作是这样一个流程: 客户端向主节点B发起写的操作 主节点B回应客户端写操作成功 主节点B向它的从节点B1,B2,B3同步 阅读全文
posted @ 2022-11-07 00:05 misaka-mikoto 阅读(297) 评论(0) 推荐(0) 编辑
摘要:Redis持久化提供了多种不同级别的持久化方式: RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 阅读全文
posted @ 2022-11-06 23:48 misaka-mikoto 阅读(83) 评论(0) 推荐(0) 编辑
摘要:被 extern "C" 修饰的变量和函数是按照 C 语言方式编译和连接的。 首先看看 C++ 中,在未加 extern "C" 声明时,对类似 C 的函数是怎样编译的。 作为一种面向对象的语言, C++ 支持函数重载,而过程式语言 C 则不支持。所以,函数被 C++ 编译后在符号库中的名字与 C 阅读全文
posted @ 2022-11-06 19:02 misaka-mikoto 阅读(37) 评论(0) 推荐(0) 编辑
摘要:关系 RDB是Redis用来进行持久化的一种方式,在指定的时间间隔内将当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。 redis会单独创建(fork)一个子进程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束 阅读全文
posted @ 2022-11-06 12:08 misaka-mikoto 阅读(151) 评论(0) 推荐(0) 编辑
摘要:Redis 复制功能是如何工作的 每一个 Redis master 都有一个 replication ID :这是一个较大的伪随机字符串,标记了一个给定的数据集。 每个 master 也持有一个偏移量,master 将自己产生的复制流发送给 slave 时,发送多少个字节的数据,自身的偏移量就会增加 阅读全文
posted @ 2022-11-05 00:01 misaka-mikoto 阅读(119) 评论(0) 推荐(0) 编辑
摘要:1.设计原则 存储系统中,所有读操作都是同步的,除非在缓存中命中,否则必须要从磁盘中读到指定的内容后才能向前端返回。(SKV也没有优化读,只优化写副本的流程) 写操作处于效率考虑,都会先在内存中缓存,由文件系统组织后,再批量写入磁盘。理论上,数据写入缓存就能向前端返回成功。但由于数据可靠性,比如断电 阅读全文
posted @ 2022-11-04 11:14 misaka-mikoto 阅读(173) 评论(0) 推荐(0) 编辑
摘要:基础步骤 应用程序需分别 经历 打 开 设 备 dev_list = ibv_get_device_list(NULL); 创 建 保 护 域 (protection domain, PD)ib_res.pd = ibv_alloc_pd(ib_res.ctx); 用来注册内存和创建qps 申 请 阅读全文
posted @ 2022-11-03 22:37 misaka-mikoto 阅读(103) 评论(0) 推荐(0) 编辑
摘要:![](https://img2022.cnblogs.com/blog/2413091/202211/2413091-20221103182708989-1538869699.png) 阅读全文
posted @ 2022-11-03 18:27 misaka-mikoto 阅读(55) 评论(0) 推荐(0) 编辑
摘要:准备环境 为nvme设备/dev/nvme0n1创建文件系统 mkfs.ext4 /dev/nvme0n1 不能直接挂载块设备文件,要先格式化文件系统 2. 挂载 mount /dev/nvme0n1 /home/msk/nvmeext4 3.spdk不能操作FS格式化后的设备,只能操作裸块设备,即 阅读全文
posted @ 2022-11-03 18:14 misaka-mikoto 阅读(1139) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示