1.操作系统在管理内存时,最小单位不是字节,而是内存页。 内存页尺寸大,操作系统执行效率高,内存空间浪费多;内存页尺寸小,效率低,空间浪费小。最适合尺寸4k; 2.内存的最小单位是字节。 ...
分类:
其他好文 时间:
2018-07-29 10:50:32
阅读次数:
139
针对Redis的性能优化,主要从下面几个层面入手:最初的也是最重要的,确保没有让Redis执行耗时长的命令使用pipelining将连续执行的命令组合执行操作系统的Transparent huge pages(大内存页)功能必须关闭,否则可能导致redis延迟和内存使用问题:echo?never?>?/sys/kernel/mm/transparent_huge
分类:
其他好文 时间:
2018-07-23 18:39:47
阅读次数:
214
在阅读内核代码的时候,明白了内核是通过页表项中的标志位_PAGE_READ,_PAGE_WRITE,_PAGE_EXECUTE来区分页的权限的。 进程在内核中的地址空间代码段,数据段,堆,栈之间最大的区别也是权限的区别,而系统调用mprotect恰好是用来改变内存页的权限的。 是否可以通过mprot ...
分类:
编程语言 时间:
2018-07-12 21:47:24
阅读次数:
404
监控Linux 服务器内存 国际惯例,我们要知道什么是服务器的内存,内存有哪些作用。这里就不做过多介绍,Linux性能监控需要我们对底层要有一定的理解。下面我将会列出我常用的监控内存的工具。 vmstat vmstat显示关于进程,内存,页,块I/O,traps和CPU的信息。vmstat既可以展示 ...
分类:
系统相关 时间:
2018-07-04 20:06:55
阅读次数:
206
一、在解释什么情况下需要开启大页和为啥需要开启大页前先了解下Linux下页的相关的知识:以下的内容是基于32位的系统,4K的内存页大小做出的计算1)目录表,用来存放页表的位置,共包含1024个目录entry,每个目录entry指向一个页表位置,每个目录entry,4b大小,目录表共4b*1024=4 ...
分类:
系统相关 时间:
2018-06-26 00:46:27
阅读次数:
209
今天看到内存映射,恰好在腾讯面试的时候被问到。当访问大于映射的大小的地址时会出现什么情况。 我亲自试验了,是没问题的。 当然这其中有两种情况,1.超过映射的内存大小但不超过一个内存页4k;2.超过已分配的内存页。 这两种情况都没有出现段错误,(有人说后者出现bus错误)。 网上有合理解释是越界访问到 ...
分类:
其他好文 时间:
2018-06-15 01:05:41
阅读次数:
193
sysctl内核参数解析 kernel.参数 kernel.shmall = 2097152 ## 1> 表示所有内存大小。可以分配的所有共享内存段的总和最大值。(以页为单位) ## 2> 该参数以页为单位,linux共享内存页一般为4k,oracle默认参数是2097152,如果系统内存大于该参数 ...
分类:
其他好文 时间:
2018-06-12 16:26:00
阅读次数:
858
bufferbuffer是一个内存地址空间,Linux系统默认大小一般为4096(4kb),即一个内存页。主要用于存储速度不同步的设备或者优先级不同的设备之间传办理数据的区域。通过buffer,可以使进程这间的相互等待变少。这里说一个通俗一点的例子,你打开文本编辑器编辑一个文件的时候,你每输入一个字 ...
分类:
其他好文 时间:
2018-05-08 14:27:26
阅读次数:
165
基本内存管理: 分页式内存管理 物理内存:帧 <==> 逻辑内存:页 页表管理页和帧的映射关系,每条记录称作PTE。即输入page number,输出frame number。 逻辑地址:page number和page offset。 物理地址:frame number和frame offset。 ...
分类:
其他好文 时间:
2018-03-13 21:09:00
阅读次数:
327
跟踪标记:834 功能: 在64位的windows环境下,为SQL Server开启这个跟踪标记,那么SQL Server 会使用大页(Large pages)为内存缓冲区(buffer pool)分配内存,从而可以提高CPU转换检测缓冲区(TLB: Translation Lookaside Bu ...
分类:
其他好文 时间:
2018-03-01 17:12:22
阅读次数:
156