<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SweeNeil]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/SweeNeil</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; SweeNeil]]></copyright><item><title><![CDATA[Linux内核内存检测工具KASan]]></title><link>https://blog.csdn.net/SweeNeil/article/details/110404284</link><guid>https://blog.csdn.net/SweeNeil/article/details/110404284</guid><author>SweeNeil</author><pubDate>Tue, 01 Dec 2020 09:48:36 +0800</pubDate><description><![CDATA[一、简介
KASan，全称Kernel Address Sanitizer，它是一个动态检测内存错误的工具，主要功能是检查内存越界访问和使用已释放的内存等问题。KASan 集成在 Linux 内核中，随 Linux 内核代码一起发布，并由内核社区维护和发展。本文简要介绍 KASan 的原理及使用方法。
二、原理与使用
2.1 KASan原理
KASan利用额外的内存标记可用内存的状态，这部分额外的内存被称作shadow memory（影子区）。在我们Linux内核中有page结构体（页描述符），用来标识物理]]></description><category></category></item><item><title><![CDATA[NOVA文件系统——inode初始化与管理]]></title><link>https://blog.csdn.net/SweeNeil/article/details/106529023</link><guid>https://blog.csdn.net/SweeNeil/article/details/106529023</guid><author>SweeNeil</author><pubDate>Thu, 04 Jun 2020 20:40:04 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[NOVA文件系统——空间管理之初始化free-list]]></title><link>https://blog.csdn.net/SweeNeil/article/details/106504737</link><guid>https://blog.csdn.net/SweeNeil/article/details/106504737</guid><author>SweeNeil</author><pubDate>Wed, 03 Jun 2020 15:37:21 +0800</pubDate><description><![CDATA[NOVA为了让NVMM空间分配与回收更快，它将NVMM分为持久性内存池（pools），每个CPU一个内存池（pool），并将空闲的NVMM页面lists放置在DRAM中。
如果当前的CPU pool中没有足够的页面可用，那么NOVA就从最大的那个池（pool）中进行分配，同时使用per-pool locks进行保护。
为了减少分配器的大小，NOVA使用一棵红黑树来维护空闲列表按地址排序，从而实现有效的合并并提供O（logn）回收。
为了提高性能，NOVA在运行期间不将分配器状态存储在NVMM中。 正常关闭时]]></description><category></category></item><item><title><![CDATA[X86_64 CR3控制寄存器详解]]></title><link>https://blog.csdn.net/SweeNeil/article/details/106171361</link><guid>https://blog.csdn.net/SweeNeil/article/details/106171361</guid><author>SweeNeil</author><pubDate>Mon, 18 May 2020 14:18:39 +0800</pubDate><description><![CDATA[CR3寄存器目前博客主要能查找到的内容都比较简单，例如

《控制寄存器 cr0,cr2,cr3》等博客，只对CR3寄存器进行了简单的介绍：

状态和控制寄存器组除了EFLAGS、EIP ，还有四个32位的控制寄存器，它们是CR0，CR1，CR2和CR3。

CR3含有存放页目录表页面的物理地址，因此CR3也被称为PDBR。因为页目录表页面是页对齐的，所以该寄存器只有高20位是有效的。而低12位保留供更高级处理器使用，因此在往CR3中加载一个新值时低12位必须设置为0。

使用MOV指令加载CR3时具有让页高]]></description><category></category></item><item><title><![CDATA[进程与MMU、TLB之间的疑问]]></title><link>https://blog.csdn.net/SweeNeil/article/details/106170597</link><guid>https://blog.csdn.net/SweeNeil/article/details/106170597</guid><author>SweeNeil</author><pubDate>Sun, 17 May 2020 10:49:27 +0800</pubDate><description><![CDATA[background

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

疑问1 MMU、TLB是否需要知道进程信息？

转换后援缓冲器T]]></description><category></category></item><item><title><![CDATA[linux perf工具测试程序cpu cache刷回实验]]></title><link>https://blog.csdn.net/SweeNeil/article/details/106148756</link><guid>https://blog.csdn.net/SweeNeil/article/details/106148756</guid><author>SweeNeil</author><pubDate>Fri, 15 May 2020 20:32:55 +0800</pubDate><description><![CDATA[一、perf安装

进入自己编译的内核，一般目录是：


/usr/src/linux-x.x.x/tools/perf

编译安装之后，即可使用


make
make install

perf的使用可以查看本文参考文献1，下面介绍一下perf工具中与cache相关的内容


sudo perf list cache



可以看到与刷回有关的事件是：LLC-stores

下面结合一个程序，来了解perf对于应用程序cacheline刷回事件的追踪~

二、测试程序

测试程序结合参考文献2、3进行.]]></description><category></category></item><item><title><![CDATA[fread带缓冲测试与验证]]></title><link>https://blog.csdn.net/SweeNeil/article/details/103516987</link><guid>https://blog.csdn.net/SweeNeil/article/details/103516987</guid><author>SweeNeil</author><pubDate>Thu, 12 Dec 2019 21:28:00 +0800</pubDate><description><![CDATA[一、FILE结构

fread操作的是FILE结构，FILE结构中包含了一个缓存buf的定义：

typedef struct _IO_FILE FILE;





struct _IO_FILE




struct _IO_FILE {
 int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
#defin...]]></description><category></category></item><item><title><![CDATA[缓冲文件系统——fopen、fread、fwrite、fclose详解]]></title><link>https://blog.csdn.net/SweeNeil/article/details/103488171</link><guid>https://blog.csdn.net/SweeNeil/article/details/103488171</guid><author>SweeNeil</author><pubDate>Wed, 11 Dec 2019 10:43:05 +0800</pubDate><description><![CDATA[一 介绍

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/

二、加深印象

看...]]></description><category></category></item><item><title><![CDATA[MySQL数据库自带基准压力测试工具MySQLSlap使用探索]]></title><link>https://blog.csdn.net/SweeNeil/article/details/103256141</link><guid>https://blog.csdn.net/SweeNeil/article/details/103256141</guid><author>SweeNeil</author><pubDate>Tue, 26 Nov 2019 16:27:52 +0800</pubDate><description><![CDATA[一、介绍

mysqlslap是MySQL5.1.4之后自带的benchmark基准测试工具，可以生成schema，装载数据，执行benckmark和查询数据，语法简单，灵活，容易使用。

该工具可以模拟多个客户端同时并发的向服务器发出查询更新，给出了性能测试数据而且提供了多种引擎的性能比较。

mysqlslap通过模拟MySQL服务器的客户端负载，并报告每个阶段的时间，它的工作方式就好像多个客...]]></description><category></category></item><item><title><![CDATA[root权限下修改文件权限遇到 chmod: changing permissions of '***': Operation not permitted]]></title><link>https://blog.csdn.net/SweeNeil/article/details/103237214</link><guid>https://blog.csdn.net/SweeNeil/article/details/103237214</guid><author>SweeNeil</author><pubDate>Mon, 25 Nov 2019 14:31:42 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/cpl9412290130/p/11592803.html

一、问题描述

众所周知，在linux系统中，权限最大的是root，但凡修改涉及到系统本身的重大权限的操作，都需要root的权限才能操作。但是有些时候也有root干不了的事情。

比如：


chmod: changing permissions of 'authorized_key...]]></description><category></category></item><item><title><![CDATA[Linux C语言根据文件描述符fd获得文件绝对路径（文件名）]]></title><link>https://blog.csdn.net/SweeNeil/article/details/103189312</link><guid>https://blog.csdn.net/SweeNeil/article/details/103189312</guid><author>SweeNeil</author><pubDate>Thu, 21 Nov 2019 19:52:18 +0800</pubDate><description><![CDATA[一、代码示例

示例代码首先根据文件名获取文件描述符，然后根据文件描述符获得文件绝对路径（文件名），如果已知文件描述符fd，可直接通过下面两条代码获得文件绝对路径（文件名）：


snprintf(buf,sizeof(buf), "/proc/self/fd/%d", abs_fd);

readlink(buf,obj_file,SIZE);

obj_file 就为文件绝对路径，完整代码示...]]></description><category></category></item><item><title><![CDATA[Ubuntu18.04编译内核后开机报错：Couldn't find suitable memory target]]></title><link>https://blog.csdn.net/SweeNeil/article/details/101021218</link><guid>https://blog.csdn.net/SweeNeil/article/details/101021218</guid><author>SweeNeil</author><pubDate>Thu, 19 Sep 2019 14:09:50 +0800</pubDate><description><![CDATA[解决方案：

在编译内核安装模块时使用如下命令：


sudo make INSTALL_MOD_STRIP=1 modules_install

其他一切照旧，编译安装完后，重启切换到新编译的内核后就不会遇到上述问题了~

解决方案及可能原因来自：

https://blog.csdn.net/ogl_90kg/article/details/82595999
...]]></description><category></category></item><item><title><![CDATA[LaTeX入门学习博客资料]]></title><link>https://blog.csdn.net/SweeNeil/article/details/100566033</link><guid>https://blog.csdn.net/SweeNeil/article/details/100566033</guid><author>SweeNeil</author><pubDate>Thu, 05 Sep 2019 20:20:50 +0800</pubDate><description><![CDATA[最近想要学习使用LaTex，安装了一下Ctex，然后准备开始使用练习~

持续更新~

一、入门学习资料

1、《LaTeX新人教程，30分钟从完全陌生到基本入门》

地址：https://blog.csdn.net/perfumekristy/article/details/8515272

备注：这个博客算是比较基础，里面的案例也都能运行通过，文中主要讲解了如何开始第一个文档，然后逐步加入标题...]]></description><category></category></item><item><title><![CDATA[Linux内核printk宏开关]]></title><link>https://blog.csdn.net/SweeNeil/article/details/99681692</link><guid>https://blog.csdn.net/SweeNeil/article/details/99681692</guid><author>SweeNeil</author><pubDate>Fri, 16 Aug 2019 17:17:10 +0800</pubDate><description><![CDATA[在内核开发时经常使用printk打印调试信息，但是printk又对性能有一定的影响，比如写了一个驱动调试完毕要发布或者做内核实验调试完毕正式测试时将这些printk删除又很麻烦，之后再想调试又要重新添加。

在内核中可以使用printk宏开关来控制这些信息的显示：


#define DEBUG_A
#ifdef DEBUG_A
#define DEBUG(fmt, args...) printk...]]></description><category></category></item><item><title><![CDATA[Linux模块编程使用内核未导出的函数]]></title><link>https://blog.csdn.net/SweeNeil/article/details/99475265</link><guid>https://blog.csdn.net/SweeNeil/article/details/99475265</guid><author>SweeNeil</author><pubDate>Tue, 13 Aug 2019 21:04:00 +0800</pubDate><description><![CDATA[转自：https://blog.csdn.net/jasonLee_lijiaqi/article/details/83089569

作者：jasonLee_lijiaqi

一般我们在编写内核模块时，可以直接使用内核中使用EXPORT_SYMBOL或者EXPORT_SYMBOL_GPL导出的函数，没有导出的内核函数不能直接使用。否则会报错未定义：


WARNING:"do_sys_open"...]]></description><category></category></item><item><title><![CDATA[英特尔Optane DC Persistent Memory操作模式说明]]></title><link>https://blog.csdn.net/SweeNeil/article/details/98486368</link><guid>https://blog.csdn.net/SweeNeil/article/details/98486368</guid><author>SweeNeil</author><pubDate>Mon, 05 Aug 2019 14:51:37 +0800</pubDate><description><![CDATA[前面介绍了Optane DC Persistent Memory有两种模式：

Memory Mode
	App Direct Mode
服务器将使用DRAM和英特尔Optan DC Persistent Memory的组合。 DRAM具有最低的内存延迟。 英特尔Optane DC Persistent Memory具有稍高的延迟，但提供了可承受的容量和数据持久性。

一、Memory Mode:...]]></description><category></category></item><item><title><![CDATA[Linux中vdbench的安装与使用]]></title><link>https://blog.csdn.net/SweeNeil/article/details/95338293</link><guid>https://blog.csdn.net/SweeNeil/article/details/95338293</guid><author>SweeNeil</author><pubDate>Wed, 10 Jul 2019 16:21:53 +0800</pubDate><description><![CDATA[vdbench是一个 I/O 工作负载生成器，用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具，容易使用，而且常常用于测试和基准测试。

可以使用vdbench测试磁盘和文件系统的读写性能。

环境：Ubuntu 16.04

一、安装Java

vdbench的运行需要依赖于java，先查看主机是否装有java：


java -version



在当前主机中，没有...]]></description><category></category></item><item><title><![CDATA[Linux中jemalloc的安装与使用]]></title><link>https://blog.csdn.net/SweeNeil/article/details/94648313</link><guid>https://blog.csdn.net/SweeNeil/article/details/94648313</guid><author>SweeNeil</author><pubDate>Thu, 04 Jul 2019 20:46:15 +0800</pubDate><description><![CDATA[一、安装

下载地址：https://github.com/jemalloc/jemalloc/releases



目前最新版本为jemalloc-5.2.0

下载之后解压文件：



下面正式开始安装~

step 1：


./autogen.sh



step 2：


make



step 3：


sudo make install



如果这一步没有超级权限的话会有如下问...]]></description><category></category></item><item><title><![CDATA[Ubuntu下F2FS文件系统的安装与挂载]]></title><link>https://blog.csdn.net/SweeNeil/article/details/91897016</link><guid>https://blog.csdn.net/SweeNeil/article/details/91897016</guid><author>SweeNeil</author><pubDate>Thu, 13 Jun 2019 21:24:44 +0800</pubDate><description><![CDATA[安装f2fs-tools


apt-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/...]]></description><category></category></item><item><title><![CDATA[Linux上安装memkind库]]></title><link>https://blog.csdn.net/SweeNeil/article/details/90646035</link><guid>https://blog.csdn.net/SweeNeil/article/details/90646035</guid><author>SweeNeil</author><pubDate>Tue, 28 May 2019 20:19:00 +0800</pubDate><description><![CDATA[memkind:https://github.com/memkind/memkind

jemalloc:https://github.com/jemalloc/jemalloc/releases

memkind简介

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

me...]]></description><category></category></item></channel></rss>