From Eager Futures/Promises to Lazy Continuations: Evolving an Actor Library Based on Lessons Learned from Large-Scale Deployments
actors (2) libprocess (3) revisiting the problem (4) evolution of libprocess (5) eventuals (6) scheduling (7) streams (8) type erasurechapters (1) motivating futures/promises + actors (2) libprocess libprocess (3) revisiting the problem (4) evolution of libprocess (5) eventuals (6) scheduling (7) streams (8) type erasurekey challenges we’ve faced building distributed systems with good performance actors (2) libprocess (3) revisiting the problem (4) evolution of libprocess (5) eventuals (6) scheduling (7) streams (8) type erasurechapters (1) motivating futures/promises + actors (2) libprocess0 码力 | 264 页 | 588.96 KB | 5 月前3Taro: Task graph-based Asynchronous Programming Using C++ Coroutine
behind Taro • Learn to use the Taro C++ programming model • Dive into the Taro’s coroutine-aware scheduling algorithm • Evaluate Taro on microbenchmarks and a real-world application • Conclusion 2Agenda behind Taro • Learn to use the Taro C++ programming model • Dive into the Taro’s coroutine-aware scheduling algorithm • Evaluate Taro on microbenchmarks and a real-world application • Conclusion 3• TGPS points - Not that straightforward CppNow23 talk: An Introduction to C++ Coroutines Through a Thread Scheduling Demonstration 20Why Not Coroutine… • Implementing a C++ function requires function itself •0 码力 | 84 页 | 8.82 MB | 5 月前3Performance Engineering: Being Friendly to Your Hardware
PRE wait • One row active at a time • All rows need to be refreshed periodically • Request scheduling • Row size != page sizeMemory 25 ACT Row Column RD/WR wait wait data PRE wait • Usable Allocation Scheduling ROM Cache L1I • Not all operations are equal • Not all combinations of operations are equalExecution 54 Branching Fetch Decode Queue Allocation Scheduling Execution • Cycles • Latency vs throughputRetirement 55 Branching Fetch Decode Queue Allocation Scheduling Execution ROM Cache L1I L1D LSQ Retirement • All operations until now are speculative •0 码力 | 111 页 | 2.23 MB | 5 月前3Combining Co-Routines and Functions into a Job System
queuesHelmut Hlavacs – Combining Co-Routines and Functions into a Job System - CppCon 2021 11 / 39 Tagged Scheduling 1 2 //Phase 1 schedule(f()); schedule(g(), tag_t{2}); //Phase 2 schedule(tag_t{2}); //schedule 1 global queue per thread, tagged scheduling • Allocate from heap or memory resource • Log performance and visualize in Google Chrome chrome://tracing/ • Scheduling jobs • schedule(…) • continuation(…) Coroutine A coawaiting coroutine C • In sync, return object in A can destroy C • Function F scheduling coroutine C • F may return before C is finished -> C must destroyed itself • What if F tries0 码力 | 39 页 | 1.23 MB | 5 月前3C++ Memory Model: from C++11 to C++23
Dathskovsky | alex.dathskovsky@speedata.io | www.linkedin.com/in/alexdathskovsky OOO Execution : Dynamic Scheduling • instruction fetched • instruction dispatched to instruction que • The instruction waits in fileAlex Dathskovsky | alex.dathskovsky@speedata.io | www.linkedin.com/in/alexdathskovsky Dynamic Scheduling • Check for structural hazards • an instruction can be issued iff a functional unit is available availableAlex Dathskovsky | alex.dathskovsky@speedata.io | www.linkedin.com/in/alexdathskovsky Dynamic Scheduling • Check for data hazards • an instruction can be executed when its operands have been calculated0 码力 | 112 页 | 5.17 MB | 5 月前3Back to Basics: Concurrency
depends on the arbitrary scheduling decisions elsewhere in the system ○ e.g. Who gets the last seat on the airplane. 2. Starvation/Fairness: External events and/or scheduling decisions can prevent sub-task depends on the arbitrary scheduling decisions elsewhere in the system ○ e.g. Who gets the last seat on the airplane. 2. Starvation/Fairness: External events and/or scheduling decisions can prevent sub-task0 码力 | 141 页 | 6.02 MB | 5 月前3Rethinking Task Based Concurrency and Parallelism for Low Latency C++
performance ○ Task starvation ○ Task aging ● Multiple queues for different priority also works but: ○ Scheduling ○ Task starvation, load balancing, work stealing Task Thread Thread Thread Task Task Task require a unique queue for each type of logic ■ But multiple queues brings other headaches such as scheduling, prioritization, etc, as enumerated previously Task Thread Thread Thread Task Task Task tree ○ That signal tree has the same capacity as the as the number of contracts in the group ○ ‘Scheduling’ a work contract causes the associated signal to be set ○ Work Contracts are invoked via the parent0 码力 | 142 页 | 2.80 MB | 5 月前3PingCAP Infra Meeutp 申砾 82 What is New TiDB
next? TiDB 2.1 PD/TiKV (1/2) ● Version Control ● PreVote ○ PD ○ TiKV ● Raft Learner ● Hotspot scheduling ● Asynchronous log PD/TiKV (2/2) ● Fix DST issue ● Batch Split, Fast Split SQL Layer (1/2) Sysbench Point-Query 2.1.0-RC5 is shipped. 2.1.0-GA is not far away. What’s Next? PD ● Hotspot Scheduling ○ Collecting Information ○ Auto balance/split hot region ● Powerful replica strategy ○ IDC ○ Replica0 码力 | 20 页 | 446.68 KB | 6 月前3The DevOps Handbook
rate) and throughput (deployment lead time, deployment frequency) e. ENABLE COORDINATION AND SCHEDULING OF CHANGES i. Loosely coupled architectures enable greater team independence and can likely succeed succeed with more informal coordination approaches like chat rooms ii. For deliberate change scheduling, gather representatives, not authorize changes, but to schedule and sequence. f. ENABLE PEER REVIEW0 码力 | 8 页 | 24.02 KB | 5 月前3cppcon 2021 safety guidelines for C parallel and concurrency
cores do not interact The Old World vs. The New ● Traditionally, automotive systems rely on static scheduling ● Each task is given a predetermined time slice in the schedule for execution ● The complete schedule module layer. ⇒ Component interaction across cores is minimized The Old World vs. The New ● Static scheduling works well only if the number of components is small or the interaction between components is0 码力 | 52 页 | 3.14 MB | 5 月前3
共 37 条
- 1
- 2
- 3
- 4
相关搜索词
FromEagerFuturesPromisestoLazyContinuationsEvolvinganActorLibraryBasedonLessonsLearnedfromLargeScaleDeploymentsTaroTaskgraphbasedAsynchronousProgrammingUsingC++CoroutinePerformanceEngineeringBeingFriendlyYourHardwareCombiningCoRoutinesandFunctionsintoJobSystemMemoryModel1123BackBasicsConcurrencyRethinkingParallelismforLowLatencyPingCAPInfraMeeutp申砾82WhatisNewTiDBTheDevOpsHandbookcppcon2021safetyguidelinesparallelconcurrency