DB12c: All You Need to Know About the Resource ManagerMaris Elsins
This presentation is different from the previous uploads as SLOB was used for the testing.
Oracle Database 12c Multitenant provides the highest level of Oracle Database resource efficiency, driven by an improved resource manager. The 12c resource manager effectively allocates resources both within a single database and between multiple pluggable databases in a container. This presentation will review new features of the 12c resource manager, provide guidelines for migration of your current resource management plan to 12c, and will also look into how much overhead the resource manager introduces.
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Three engineers, at various points, each take their own approach adding Rust to a C codebase, each being more and more ambitious. I initially just wanted to replace the server’s networking and event loop with an equally fast Rust implementation. We’d reuse many core components that were in C and just call into them from Rust. Surely it wouldn’t be that much code…
Pelikan is Twitter’s open source and modular framework for in-memory caching, allowing us to replace Memcached and Redis forks with a single codebase and achieve better performance. At Twitter, we operate hundreds of cache clusters storing hundreds of terabytes of small objects in memory. In-memory caching is critical, and demands performance, reliability, and efficiency.
In this talk, I’ll share my adventures in working on Pelikan and how rewriting it in Rust can be more than just a meme.
DB12c: All You Need to Know About the Resource ManagerMaris Elsins
This presentation is different from the previous uploads as SLOB was used for the testing.
Oracle Database 12c Multitenant provides the highest level of Oracle Database resource efficiency, driven by an improved resource manager. The 12c resource manager effectively allocates resources both within a single database and between multiple pluggable databases in a container. This presentation will review new features of the 12c resource manager, provide guidelines for migration of your current resource management plan to 12c, and will also look into how much overhead the resource manager introduces.
Note: When you view the the slide deck via web browser, the screenshots may be blurred. You can download and view them offline (Screenshots are clear).
Three engineers, at various points, each take their own approach adding Rust to a C codebase, each being more and more ambitious. I initially just wanted to replace the server’s networking and event loop with an equally fast Rust implementation. We’d reuse many core components that were in C and just call into them from Rust. Surely it wouldn’t be that much code…
Pelikan is Twitter’s open source and modular framework for in-memory caching, allowing us to replace Memcached and Redis forks with a single codebase and achieve better performance. At Twitter, we operate hundreds of cache clusters storing hundreds of terabytes of small objects in memory. In-memory caching is critical, and demands performance, reliability, and efficiency.
In this talk, I’ll share my adventures in working on Pelikan and how rewriting it in Rust can be more than just a meme.
142. 並行行程交錯執行的無法預期範例
int number ; // 在共用記憶體區塊
中
// 行程 A
main(){
<< 省略 >>
while(1){
<< 省略 >>
number++ ;
}
// 行程 B
main(){
<< 省略 >>
while(1){
<< 省略 >>
number-- ;
}
}
143. 無法預期的範例( 2nd )
Number 原先的值為 3
行程 A 並行執行
number++
行程 B 並行執行
number--
Number 的執行結果應該
是 3
Number++
– 暫存器 A = number
– 暫存器 A = 暫存器 A + 1
– number = 暫存器 A
Number--
– 暫存器 B = number
– 暫存器 B = 暫存器 B - 1
– number = 暫存器 B
144. 無法預期的範例( 3th )
步驟 執行行程 執行指令 執行結果
Step1 行程 A 暫存器 A = number 暫存器 A = 3
Step2 行程 A 暫存器 A = 暫存器 A + 1 暫存器 A = 4
Step3 行程 B 暫存器 B = number 暫存器 B = 3
Step4 行程 B 暫存器 B = 暫存器 B - 1 暫存器 B = 2
Step5 行程 B number = 暫存器 B number = 2
Step6 行程 A number = 暫存器 A number = 4
此種狀況稱為「競爭狀態」
276. 欄位配置演算法
平等分配 (equal allocation)
– 讓每個行程分到一樣多的欄位。
– 假設總共有 m 個欄位可用,要分配給 n 個行程,則每個行程就
可以分到 m/n 個欄位。
比例分配 (proportional allocation)
– 根據每個行程所需的記憶體大小,依比例分配。
– 假設行程 pi
需要 si
單位的記憶體,而所有行程所需的記憶體總
量為 S 單位。
– 可用的欄位總數為 m ,分配給其中一個行程 pi
的欄位數為 ai
,
則 ai
的值 為 :
ai
= m × (si
/ S)