More than code

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

brpc-7 WorkStealingQueue

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

2022年6月7日 0条评论 500点热度 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条评论 463点热度 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条评论 412点热度 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条评论 553点热度 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条评论 775点热度 0人点赞 sheep 阅读全文
未分类

brpc-2 IO

IO 文档 dispatcher在event_dispatcher.h中 当新的连接出现的时候,dispatcher就负责将fd分发给bthread epoll out在我们可以向对端写入数据的时候会触发 epoll in则是在对端有数据写入时会触发。触发一次后需要不断的读取所有数据直到EAGAIN为止。 EPOLLIN connection arrives; data is coming; The associated file is available for read operations EPOLLOUT …

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

brpc-1 ResourcePool

记录一下在读brpc的时候学习到的点 ResourcePool ResourceID来标识资源。虽然不同的类型有不同类型的ResourcID,但是内部都是一个uint64 存储数据的是Block。当线程需要内存的时候,他就会分配一个block。每个block内部的数据只会被一个线程使用 一个block就相当于是一个小的DataPool 若干个block组成一个block group。BlockGroup通过指针数组索引block LocalPool是thread local的data pool 一个比较有意思的点就…

2022年6月3日 0条评论 544点热度 0人点赞 sheep 阅读全文
paper

Morsel-Driven Parallelism: A NUMA-Aware Query Evaluation Framework for the Many-Core Age

Morsel-Driven Parallelism: A NUMA-Aware Query Evaluation Framework for the Many-Core Age Abstract 随着计算机架构的发展,在parallel query execution中出现了两个问题: * 为了利用好多核的优势,每个查询需要被均匀的分布到每个线程中 * 即便是我们拥有相当准确的统计数据,也很难将负载均匀的划分开 这两个问题导致了目前的plan-driven parallelism陷入了负载均衡和上下文切换的瓶颈中 …

2022年6月2日 0条评论 480点热度 1人点赞 sheep 阅读全文
paper

GentleRain tutorial

GentleRain tutorial 首先要知道最简单的causal consistency是怎么实现的 在论文Session Guarantees For Weak Consistent Replicated Data中有详细的说明 每一个更新都附带一个version vector,当远端数据中心的version vector大于这个更新的version vector的时候,这个更新才能被安装到远端数据库中。从而保证因果一致性。 下一个问题,当数据中心内进行数据分区的时候,我们要怎么处理? 每个分区内部都维护一…

2022年5月26日 0条评论 484点热度 0人点赞 sheep 阅读全文
paper

GentleRain: Cheap and Scalable Causal Consistency with Physical Clocks

GentleRain: Cheap and Scalable Causal Consistency with Physical Clocks Abstract GentleRain是geo-replicated data store,提供因果一致性 GentleRain用periodic aggregation protocol来决定更新是否能被其他人看到 GentleRain通过一个标量的时间戳来实现因果一致性。时间戳是从loosely synchronized physical clocks导出的,时钟漂移不会…

2022年5月26日 0条评论 448点热度 0人点赞 sheep 阅读全文
1…1011121314…28
分类
  • ARTS
  • C++
  • CSAPP
  • daily
  • database
  • leetcode
  • linux
  • ml
  • nlp
  • paper
  • rocksdb
  • rust
  • ScummVM
  • tech
  • 其他
  • 周报
  • 未分类
  • 笔记
  • 算法
  • 计算机图形学
归档
  • 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