Home » 2014 » December (Page 4)

Minecraft 與 Bitcoin 的結合?

VentureBeat 的這篇「How Minecraft may make bitcoin the ‘official currency of virtual worlds’」讓人想了一下遊戲的虛擬貨幣與 Bitcoin 的結合...

與以往的不一樣的情況:

  • 不需要找金流系統接,Bitcoin 可以直接獨立運作,馬上可以想到不少方法利用 Bitcoin 的架構來規劃虛擬貨幣。
  • 法令更不容易管制,如果遊戲本身再透過 Tor 隱藏在 Tor network 裡的話就更完整。以往在最後要換錢的部份都還會經過金流系統與實體界接,現在連這個部分都避開了。

再來是 Bitcoin 的中立性,跨遊戲之間的交易也許是另外一個可能的強大之處?

不過 Bitcoin 的 n=6 確認應該會讓人感覺到愈來愈痛,不知道後面會怎麼解決...

Google 計畫關閉在俄羅斯的 Engineering Office

路透社丟出來的新聞:「Google to close engineering office in Russia: WSJ」。

新通過的法案要求俄羅斯人的資料必須存放在俄羅斯境內,這個法案被懷疑是 Google 打算直接關閉俄羅斯的 Engineering Office 的原因:

In July, Russia's parliament passed a law to force Internet sites that store the personal data of Russian citizens to do so inside the country, a move the Kremlin says is for data protection but which critics see as an attack on social networks.

來看看後續發展...

Facebook 因為 Connection Pool 選擇機制,加上系統的複雜性而導致的慘案...

Facebook 的 engineer 寫了一篇文章,說明他們花了超過兩年的時間找到一個 bug:「Solving the Mystery of Link Imbalance: A Metastable Failure State at Scale」。

整個故事是個通靈的故事...

Facebook 在底層的架構使用了 Link Aggregation 的規劃,多條線路 channel bonding 在一起連到骨幹上。但發現有時候會卡在某一條線路壅塞而導致 system failure。

於是就一路追下去,從 switch 本身開始懷疑,最後去組織跨部門的研究小組跳下去分析 (通靈)。後來才觀察到是因為 connection pool 的機制本身用的演算法在 Facebook 這個複雜的系統架構下造成的慘案...

當 query burst 發生時,Facebook 的系統會同時到 50~100 組資料庫撈資料出來寫入 cache,而 connection pool 的機制用的是 MRU (Most Recently Used),從 congestion link 回來的 connection 會在 pool 裡面的最上方,於是就愈來愈塞...

知道問題後,解決的方法就簡單多了。只是把 connection 選擇演算法從 MRU 換成 LRU 後就解決了,但中間用了超過兩年的時間,以及至少 30 個人的努力才把問題找出來並且解決。

可以看到最後銘謝的對象一卡車:

Thanks to all of the engineers who helped us manage and then fix this bug, including James Paussa, Ernesto Ovcharenko, Mark Drayton, Peter Hoose, Ankur Agrawal, Alexey Andreyev, Billy Choe, Brendan Cleary, JJ Crawford, Rodrigo Curado, Tim Eberhard, Kevin Federation, Hans Fugal, Mayuresh Gaitonde, CJ Infantino, Mark Marchukov, Chinmay Mehta, Murat Mugan, Austin Myzk, Gaya Nagarajan, Dmitri Petrov, Marco Rizzi, Rafael Rodriguez, Steve Shaw, Adam Simpkins, David Swafford, Wendy Tobagus, Thomas Tobin, TJ Trask, Diego Veca, Kaushik Veeraraghavan, Callahan Warlick, Jason Wilbanks, Jimmy Williams, and Keith Wright.

最後附上 Facebook 解釋的圖:

AWS OpsWorks 支援非 EC2 instance 的管理

AWS OpsWorks 算是 Chef hosting 加上設計好的管理機制?之前只能用在 AWS 上,現在則可以使用在非 EC2 instance 上了:「AWS OpsWorks Update - Support for Existing EC2 Instances and On-Premises Servers」。

在 EC2 上不用額外收費,在 EC2 外要收 USD$0.02/hour:

OpsWorks costs $0.02 per hour for each on-premises server on which you install the agent, and is available at no additional charge for EC2 instances.

看不太懂為什麼要支援非 EC2 的服務,扶植 Chef 嗎?

Valgrind 的其他用途

這篇文章的標題就說明了作者對 Valgrind 只被拿來抓 leak 很不滿:「Valgrind is *NOT* a leak checker」。

依照文章裡的說法:

Valgrind is an undefined behavior checking tool first, a function and memory profiler second, a data-race detection tool third, and a leak checking tool last.

文章裡從最簡單的用法 (什麼參數都不加) 開始解釋,到後面的 leak 檢查以及 profiling,算是還蠻清楚的 XDDD

用 perf 追蹤系統狀態

在「Make Your Program Slower With Threads」這邊看到的工具:「Linux kernel profiling with perf」。

Ubuntu 上的安裝方式是安裝 linux-tools,不過我的機器上是安裝 linux-tools-lts-raring

先從比較簡單的 stat,基本的用法很簡單,後面接指令就可以了:

perf stat ls -al

這樣會出現基本的執行狀況,像是這樣:

 Performance counter stats for 'ls -al':

         11.236723 task-clock                #    0.703 CPUs utilized          
               341 context-switches          #    0.030 M/sec                  
                 0 cpu-migrations            #    0.000 K/sec                  
               453 page-faults               #    0.040 M/sec                  
         8,186,524 cycles                    #    0.729 GHz                    
    stalled-cycles-frontend 
    stalled-cycles-backend  
        10,366,309 instructions              #    1.27  insns per cycle        
         2,122,560 branches                  #  188.895 M/sec                  
            36,979 branch-misses             #    1.74% of all branches        

       0.015977493 seconds time elapsed

更複雜的用法在 Tutorial 那篇文章裡面有說明。

Archives