More than code

More Than Code
The efficiency of your iteration of reading, practicing and thinking decides your understanding of the world.
database

Access Path Selection in Main-Memory Optimized Data Systems: Should I Scan or Should I Probe?

Access Path Selection in Main-Memory Optimized Data Systems: Should I Scan or Should I Probe? Abstract 列式数据分析引擎的发展引起了一系列对scan operator的优化。比如column-group storage, vectorized execution, shared scans, working directly over compressed data, using SIMD and multi-co…

2022年6月10日 0条评论 683点热度 0人点赞 sheep 阅读全文
未分类

brpc-11 bthread remain

bthread remain 这一节把bthread相关的收收尾。把之前留下的坑填一下。 最主要的就是interrupt了 用来打断在butex上的睡眠 注释有说到如果当前bthread没有被阻塞的话,这次interrupt就会被记住,然后在下一次阻塞的时候进行检查。 这里先调用interrupt and consume waiters 通过原子操作把current waiter拿出来。这样我们就可以获得butex上对应的结点。 然后用erase from butex because of interruption…

2022年6月9日 0条评论 546点热度 0人点赞 sheep 阅读全文
未分类

brpc-10 TimerThread

TimerThread 这次我们看看timer thread 之前已经大概知道他是干什么的了。在注释中也比较清楚 即在指定时间运行指定任务。注意运行任务的是独立的一个线程,添加任务和删除任务还是由调用者进行,而不是通过一些事件去分发。 先看看成员变量 这个stop原子量很常见了,用来停掉无限循环的代码的 option指的是timer thread的一些配置 timer thread是通过哈希来定位具体的任务的。所以我们有若干个bucket mutex则用来保护nearest run time _thread则是用来…

2022年6月9日 0条评论 572点热度 0人点赞 sheep 阅读全文
未分类

brpc-9 butex

butex Butex就是可以在pthread和bthread中通用的futex-link primitive 可以看到比较熟悉的API。创建,删除,wake,wait。 还有两个不是那么熟悉的,就是wake except,以及requeue 最开始的两个例子。对应了wait和wake的顺序。要么wait可以看到新的value,然后停止wait。要么wait被wake唤醒。 一个butex有一个原子量,也就是对应的futex-word。若干个等待者,还有一个lock 这里可以看出来和我们之前看的brpc内部的fut…

2022年6月8日 0条评论 576点热度 1人点赞 sheep 阅读全文
未分类

brpc-8 bthread API

bthread API 这一次针对性的看看bthread.cpp这个文件的作用 主要是定义使用bthread的API的 这个之前提到过,是用来获取全局单例TaskControl的 用来设置最小的并发数量。可以看到当val大于当前的concurrency,也就是pthread worker数量的时候,我们就添加若干个worker来让他的并发数达到val 这个也提到过。start urgent会开始执行新的bthread,现有的bthread会被偷走 start background则是把bthread加入到任务队列中…

2022年6月8日 0条评论 540点热度 0人点赞 sheep 阅读全文
未分类

brpc-7 WorkStealingQueue

WorkStealingQueue 这次我们看看bthread比较关键的两个queue,work stealing queue,以及remote queue 先看work stealing queue 从这个成员变量就可以大概猜出来一些东西。这应该是一个循环队列类似的东西。最朴素的队列应该不太可能,因为性能太差。当然也有可能是一个batch一个batch的分配元素,如果是那样的话我们需要内部维护一个链表,但是这里看貌似什么都没有。 初始化部分可以看到我们是按照2的次幂的大小进行分配空间的 注释中可以看到,push可…

2022年6月7日 0条评论 679点热度 1人点赞 sheep 阅读全文
未分类

brpc-6 TaskGroup

TaskGroup 这次针对性的看一看task group里面的内容 之前提到过,一个task group对应了一个pthread worker,里面包含了若干个待运行的bthread任务 cur meta就是当前执行的任务的信息 task control就是全局的控制点 pl之前我们也提过,是用来停闲置的worker的 steal seed和steal offset是用来计算我们要偷取哪个worker的任务的。因为我们要保证随机 rq是running queue,就是目前正在执行的bthread的queue re…

2022年6月6日 0条评论 656点热度 0人点赞 sheep 阅读全文
未分类

brpc-5 Futex

Futex 在进入到brpc之前,先看看linux的futex是怎么用的。 man page中有比较详细的描述 可以把futex看作是一个原子的compare-and-block,他会原子的比较目标地址上的值,并进入睡眠。 通常的用法就是我们先通过一个用户空间的原子量来表示锁。当一个线程发现锁已经被获得了以后,他就会通过futex来睡眠,直到锁不再被其他人占有。 (感觉实现起来需要特殊处理signal,我们只要保证signal不出现在compare和block之间,就不会出现lost wakeup的问题) fute…

2022年6月6日 0条评论 574点热度 0人点赞 sheep 阅读全文
未分类

brpc-4 bthread

bthread 线程知识 bthread文档 bthread很关键的一点和协程的不同就是当bthread被阻塞的时候,同一个pthread下的其他bthread不会被阻塞,而是会被其他的pthread偷走运行。 bthread的启动函数 bthread中的一个task group对应了一个worker,可以看到他是从tls中取task group的,所以可以想到是一个pthread对应一个task group 如果没有task group的话,说明当前的pthread不是bthread worker。所以我们就调用…

2022年6月5日 0条评论 771点热度 0人点赞 sheep 阅读全文
未分类

brpc-3 IO(2)

IO(2) 我之前画的一个图,表示RPC的通信过程。 上一次说了server端是怎么接受请求并处理的,这一次看看客户端这边的处理。 我们在通过Stub调用RPC的时候,会调用到channel.CallMethod中 void EchoService_Stub::Echo(::google::protobuf::RpcController* controller, const ::EchoRequest* request, ::EchoResponse* response, ::google::protobuf::C…

2022年6月4日 0条评论 973点热度 0人点赞 sheep 阅读全文
1…1314151617…31
分类
  • Agent/RAG
  • ARTS
  • C++
  • CSAPP
  • daily
  • database
  • leetcode
  • linux
  • ml
  • nlp
  • paper
  • RL
  • rocksdb
  • rust
  • ScummVM
  • tech
  • 其他
  • 周报
  • 未分类
  • 笔记
  • 算法
  • 计算机图形学
归档
  • 2025 年 12 月
  • 2025 年 11 月
  • 2025 年 10 月
  • 2025 年 9 月
  • 2025 年 8 月
  • 2025 年 7 月
  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 9 月
  • 2023 年 7 月
  • 2023 年 6 月
  • 2023 年 5 月
  • 2023 年 4 月
  • 2023 年 2 月
  • 2023 年 1 月
  • 2022 年 9 月
  • 2022 年 7 月
  • 2022 年 6 月
  • 2022 年 5 月
  • 2022 年 4 月
  • 2022 年 3 月
  • 2022 年 2 月
  • 2022 年 1 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 10 月
  • 2021 年 9 月
  • 2021 年 8 月
  • 2021 年 7 月
  • 2021 年 6 月
  • 2021 年 5 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 1 月
  • 2020 年 12 月

COPYRIGHT © 2021 heavensheep.xyz. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS