![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
性能调优
cft56200_ln
格拉德韦尔在《异数》:并非天资超人一等,而是付出了持续不断的努力。只要经过1万小时的锤炼,任何人都能从平凡变成超凡”。要成为某个领域的专家,需要10000小时:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。
展开
-
linux 内核初始化过程
1. 内核的启动从入口函数 start_kernel() 开始。在 init/main.c 文件中,start_kernel 相当于内核的 main 函数。打开这个函数,你会发现,里面是各种各样初始化函数 XXXX_init。 在操作系统里面,先要有个创始进程,有一行指令 set_task_stack_end_magic(&init_task)。这里面有一个参数 init_task,它的定义是 struct task_struct init_task = INIT_TASK(ini...原创 2021-02-23 10:48:24 · 650 阅读 · 0 评论 -
性能优化技术的三个方向
要么减少了磁盘的工作量(比如 PageCache 缓存),要么减少了 CPU 的工作量(比如直接 IO),要么提高了内存的利用率(比如零拷贝原创 2021-02-23 09:31:52 · 238 阅读 · 0 评论 -
如何高效的传输文件
基于用户缓冲区传输文件时,过多的内存拷贝与上下文切换次数会降低性能。零拷贝技术在内核中完成内存拷贝,天然降低了内存拷贝次数。它通过一次系统调用合并了磁盘读取与网络发送两个操作,降低了上下文切换次数。尤其是,由于拷贝在内核中完成,它可以最大化使用 socket 缓冲区的可用空间,从而提高了一次系统调用中处理的数据量,进一步降低了上下文切换次数。 零拷贝技术基于 PageCache,而 PageCache 缓存了最近访问过的数据,提升了访问缓存数据的性能,同时,为了解决机械磁盘...原创 2021-02-23 09:31:16 · 174 阅读 · 0 评论 -
03 | 索引:如何用哈希表管理亿级对象?
极客时间 陶辉https://time.geekbang.org/column/article/232351对大量数据,显然,遍历全部数据去匹配查询关键字,会非常耗时。如果使用额外的空间为这些数据创建索引,就可以基于索引实现快速查找,这是常用的解决方案。比如,我们用标准库里提供的字典类容器存放对象,就是在数据前增加了索引,其本质就是以空间换时间。当然,索引有很多,哈希表、红黑树、B 树都可以在内存中使用,如果我们需要数据规模上亿后还能提供微秒级的访问速度,那么作为最快的索引,哈希表是第一选择。..原创 2021-02-22 09:42:26 · 115 阅读 · 0 评论 -
提升内存分配效率笔记
参考文献:https://time.geekbang.org/column/article/2302211,内存分配过程 2,多线程与单线程的预分配策略并不相同。每个子线程预分配的内存是 64MB(Ptmalloc2 中被称为 Thread Arena,32 位系统下为 1MB,64 位系统下为 64MB)。如果有 100 个线程,就将有 6GB 的内存都会被内存池占用。当然,并不是设置了 1000 个线程,就会预分配 60GB 的内存,子线程内存池最多只能到 8 倍的...原创 2021-02-20 09:17:27 · 516 阅读 · 0 评论 -
攻克 Linux 操作系统 新手成为大牛的历程
参考网址https://time.geekbang.org/column/article/87628原创 2021-02-19 13:56:15 · 112 阅读 · 0 评论 -
操作系统提供了将进程或者线程绑定到某一颗 CPU 上运行的能力 提高提升多核 CPU 下的缓存命中率
代码示例#include "stdio.h"#include <stdlib.h>#include <time.h>#include <sys/time.h>#include <iostream>#include <unistd.h>#include <pthread.h>#include <sched.h>using namespace std;#define TESTN 16*1024L原创 2021-02-19 11:01:40 · 265 阅读 · 0 评论