3 SweeNeil

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2w+

NOVA文件系统——inode初始化与管理

1、NOVA inode简介在NOVA论文中对Inode Table进行了一下描述:NOVA将每个inode table初始化为2MB的inode块数组。 每个NOVA inode都以128字节边界对齐,因此给定的inode number NOVA可以轻松地定位目标inode。 NOVA按循环顺序将新的inode分配给每个inode table,以便inode在inode table之间均匀分布。 如果inode table已满,则NOVA通过构建2MB sub-tables的链表来扩展它。 为了减小i

2020-06-04 20:40:04

NOVA文件系统——空间管理之初始化free-list

NOVA为了让NVMM空间分配与回收更快,它将NVMM分为持久性内存池(pools),每个CPU一个内存池(pool),并将空闲的NVMM页面lists放置在DRAM中。如果当前的CPU pool中没有足够的页面可用,那么NOVA就从最大的那个池(pool)中进行分配,同时使用per-pool locks进行保护。为了减少分配器的大小,NOVA使用一棵红黑树来维护空闲列表按地址排序,从而实现有效的合并并提供O(logn)回收。为了提高性能,NOVA在运行期间不将分配器状态存储在NVMM中。 正常关闭时

2020-06-03 15:37:21

X86_64 CR3控制寄存器详解

CR3寄存器目前博客主要能查找到的内容都比较简单,例如《控制寄存器 cr0,cr2,cr3》等博客,只对CR3寄存器进行了简单的介绍:状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。CR3含有存放页目录表页面的物理地址,因此CR3也被称为PDBR。因为页目录表页面是页对齐的,所以该寄存器只有高20位是有效的。而低12位保留供更高级处理器使用,因此在往CR3中加载一个新值时低12位必须设置为0。使用MOV指令加载CR3时具有让页高

2020-05-18 14:18:39

进程与MMU、TLB之间的疑问

background在Linux中,进程操作的都是虚拟地址,而MMU是进行虚拟地址与物理地址的转化,TLB用于加快虚拟地址(线性地址)的转换~ 每个进程都有自己对应的页表,不同进程相同的虚拟地址映射的大概率不是相同的物理地址,同时不同进程不同的虚拟地址可能映射到相同的物理地址上。本文的疑问就是针对进程有不同的页表,那么MMU与TLB到底是怎么根据虚拟地址找到物理地址的呢,是不是MMU和TLB需要知道进程的信息呢,带着这些疑问来进行探究~疑问1 MMU、TLB是否需要知道进程信息?转换后援缓冲器T

2020-05-17 10:49:27

linux perf工具测试程序cpu cache刷回实验

一、perf安装进入自己编译的内核,一般目录是:/usr/src/linux-x.x.x/tools/perf编译安装之后,即可使用makemake installperf的使用可以查看本文参考文献1,下面介绍一下perf工具中与cache相关的内容sudo perf list cache可以看到与刷回有关的事件是:LLC-stores下面结合一个程序,来了解perf对于应用程序cacheline刷回事件的追踪~二、测试程序测试程序结合参考文献2、3进行.

2020-05-15 20:32:55

fread带缓冲测试与验证

一、FILE结构fread操作的是FILE结构,FILE结构中包含了一个缓存buf的定义:typedef struct _IO_FILE FILE;struct _IO_FILEstruct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */#defin...

2019-12-12 21:28:00

缓冲文件系统——fopen、fread、fwrite、fclose详解

一 介绍1、《缓冲文件系统和非缓冲文件系统》https://nocbtm.github.io/2018/11/05/%E7%BC%93%E5%86%B2%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%92%8C%E9%9D%9E%E7%BC%93%E5%86%B2%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/二、加深印象看...

2019-12-11 10:43:05

MySQL数据库自带基准压力测试工具MySQLSlap使用探索

一、介绍mysqlslap是MySQL5.1.4之后自带的benchmark基准测试工具,可以生成schema,装载数据,执行benckmark和查询数据,语法简单,灵活,容易使用。该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap通过模拟MySQL服务器的客户端负载,并报告每个阶段的时间,它的工作方式就好像多个客...

2019-11-26 16:27:52

root权限下修改文件权限遇到 chmod: changing permissions of '***': Operation not permitted

转自:https://www.cnblogs.com/cpl9412290130/p/11592803.html一、问题描述众所周知,在linux系统中,权限最大的是root,但凡修改涉及到系统本身的重大权限的操作,都需要root的权限才能操作。但是有些时候也有root干不了的事情。比如:chmod: changing permissions of 'authorized_key...

2019-11-25 14:31:42

Linux C语言根据文件描述符fd获得文件绝对路径(文件名)

一、代码示例示例代码首先根据文件名获取文件描述符,然后根据文件描述符获得文件绝对路径(文件名),如果已知文件描述符fd,可直接通过下面两条代码获得文件绝对路径(文件名):snprintf(buf,sizeof(buf), "/proc/self/fd/%d", abs_fd);readlink(buf,obj_file,SIZE);obj_file 就为文件绝对路径,完整代码示...

2019-11-21 19:52:18

Ubuntu18.04编译内核后开机报错:Couldn't find suitable memory target

解决方案:在编译内核安装模块时使用如下命令:sudo make INSTALL_MOD_STRIP=1 modules_install其他一切照旧,编译安装完后,重启切换到新编译的内核后就不会遇到上述问题了~解决方案及可能原因来自:https://blog.csdn.net/ogl_90kg/article/details/82595999...

2019-09-19 14:08:29

LaTeX入门学习博客资料

最近想要学习使用LaTex,安装了一下Ctex,然后准备开始使用练习~持续更新~一、入门学习资料1、《LaTeX新人教程,30分钟从完全陌生到基本入门》地址:https://blog.csdn.net/perfumekristy/article/details/8515272备注:这个博客算是比较基础,里面的案例也都能运行通过,文中主要讲解了如何开始第一个文档,然后逐步加入标题...

2019-09-05 20:06:52

Linux内核printk宏开关

在内核开发时经常使用printk打印调试信息,但是printk又对性能有一定的影响,比如写了一个驱动调试完毕要发布或者做内核实验调试完毕正式测试时将这些printk删除又很麻烦,之后再想调试又要重新添加。在内核中可以使用printk宏开关来控制这些信息的显示:#define DEBUG_A#ifdef DEBUG_A#define DEBUG(fmt, args...) printk...

2019-08-16 17:17:10

Linux模块编程使用内核未导出的函数

转自:https://blog.csdn.net/jasonLee_lijiaqi/article/details/83089569作者:jasonLee_lijiaqi一般我们在编写内核模块时,可以直接使用内核中使用EXPORT_SYMBOL或者EXPORT_SYMBOL_GPL导出的函数,没有导出的内核函数不能直接使用。否则会报错未定义:WARNING:"do_sys_open"...

2019-08-13 21:04:00

英特尔Optane DC Persistent Memory操作模式说明

前面介绍了Optane DC Persistent Memory有两种模式:Memory Mode App Direct Mode服务器将使用DRAM和英特尔Optan DC Persistent Memory的组合。 DRAM具有最低的内存延迟。 英特尔Optane DC Persistent Memory具有稍高的延迟,但提供了可承受的容量和数据持久性。一、Memory Mode:...

2019-08-05 14:51:37

Linux中vdbench的安装与使用

vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。可以使用vdbench测试磁盘和文件系统的读写性能。环境:Ubuntu 16.04一、安装Javavdbench的运行需要依赖于java,先查看主机是否装有java:java -version在当前主机中,没有...

2019-07-10 16:21:53

Linux中jemalloc的安装与使用

一、安装下载地址:https://github.com/jemalloc/jemalloc/releases目前最新版本为jemalloc-5.2.0下载之后解压文件:下面正式开始安装~step1:./autogen.shstep2:makestep3:sudomakeinstall如果这一步没有超级权限的话会有如下问...

2019-07-04 20:46:15

Ubuntu下F2FS文件系统的安装与挂载

安装f2fs-toolsapt-get install -y f2fs-tools如果上一步出错,则执行:dpkg --configure -a再重新apt-get install -y f2fs-tools如果直接apt-get不成功,还可以通过下载源码包的方式来安装f2fs-tools:git clone git://git.kernel.org/pub/scm/...

2019-06-13 21:24:44

Linux上安装memkind库

memkind:https://github.com/memkind/memkindjemalloc:https://github.com/jemalloc/jemalloc/releasesmemkind简介memkind库是一个构建在jemalloc之上的用户可扩展堆管理器,它可以控制内存特性和各种内存之间的堆分区。这类内存由已应用于虚拟地址范围的操作系统内存策略定义。me...

2019-05-28 20:19:00

持久性内存编程——内存分配使用举例

前面有了两篇讲解内存分配的博文:持久性内存编程——事务性动态内存分配:https://blog.csdn.net/SweeNeil/article/details/90547136持久性内存编程——原子分配动态内存:https://blog.csdn.net/SweeNeil/article/details/90444432其实写得都有点简单,没有一个比较简单具体的案例,下面就把具体的...

2019-05-25 19:39:11

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。