= 2010-03-31 = == IDEA: Cloud CPU == * 今天中午在跟擅長 GPU 與平行運算的郭芳安同仁聊天,除了談到怎麼讓 Multiple GPU 可以透過 pthread, OpenMP, MPI 作協同運作外,也談到目前的應用瓶頸主要還是在 Data I/O Throughput,這裡講的並不是最前面讀取資料,最後面寫回硬碟(SAN, NAS, 或 D/P File System)的資料通量,而是在運算過程中的資料通量,可能發生在網路卡之間(MPI job),可能發生在 CPU 經過北橋晶片,存取記憶體的過程。目前最大的問題還是在於 CPU 無法直接存取記憶體,因此 CPU 根本「吃不飽」。在現階段我們的一些省電測試中,確實光是四核心 CPU 就很難餵飽它,讓它一直維持 100%。目前最接近的 CPU 架構應該是 Blue Gene,當然我也提到過去在觀察的 Network Processor。不過最後我們得到一個結論,就是如果有一種 CPU 架構可以直接存取網路跟記憶體,那這種 CPU 大概是最適合高效能運算(HPC)的吧。 {{{ #!graphviz digraph finite_state_machine { rankdir=LR; ranksep=1.0; size="16,10"; node[shape=box,width=2.0]; "Network MAC/PHY" -> "CPU" -> "Memory / Cache" } }}} == Green Computing : Energy Efficiency : DRBL/Clonezilla over NAS == * 關於 Network Processor 目前大多數應用在 NAS 裝置上,因此今天跟哲源討論的時候,談到或許把 NFS 甚至整個 DRBL Server 移植到 NAS 上,搞不好會最省電,因為 CPU 特性的原因。但是這樣造成另一個問題,由於通常 NAS 是 ARM 或 MIPS 等架構,縱使可以裝 Debian,但卻不能拿來接 x86 架構的個人電腦作備份還原。因為光是 linux kernel, glibc 就造成很大的差異。這個問題跟 32 位元的 server 配上 64 位元的 client 有異曲同工之妙,會遇到不同 CPU 架構造成的異質性問題。 == Configuration Management Tool == * 先前常遇到 DRBL 在整合一些叢集軟體的設定檔案問題,有時 Server 跟 Client 必須不同,這就有點跟原始 DRBL 用意不太一致,也容易因為重跑 DRBL redeploy 而需要重新修改,特別是 /etc/hosts。是否該整合所謂 Configuration Management 的軟體,來協助部署像是 Hadoop 或者 Lustre 這種軟體呢?値得評估看看,但第一步可能還是得先了解一下這些 Configuration Management Tool 的用法。 * 參考 [http://wiki.apache.org/hadoop/LargeClusterTips Hadoop Wiki] 有提到幾種:bcfg2, !SmartFrog, Puppet, cfengine {{{ Consider a system configuration management package to keep Hadoop's source and configuration consistent across all nodes. Some example packages are bcfg2, SmartFrog, Puppet, cfengine, etc. }}} * [http://people.apache.org/~stevel/slides/deploying_hadoop_with_smartfrog.pdf Deploying Apache Hadoop with SmartFrog] * http://smartfrog.org/ - 由 HP 實驗室設計的叢集設定軟體(Configuration Management tools, CM-tool) * [http://trac.mcs.anl.gov/projects/bcfg2 Bcfg2] 是由 Argonne National Laboratory 開發的 - [http://packages.debian.org/bcfg2 Debian 有 bcfg2 套件] * [http://www.cfengine.org/ Cfengine] (configuration engine) - [http://cha.homeip.net/blog/archives/2006/03/cfengine.html 自動化管理工具],甚至號稱未來可以管理雲端 - [http://cloudcomputing.sys-con.com/node/795051/print Newly Released Cfengine 3 will Manage Resource Clouds] * [http://www.puppetlabs.com/ puppet] 是一套用來佈署叢集設定檔的工具。不過....從東京大學IRT研究機構(Information and Robot Technology Research Initiative)的叢集管理實務經驗顯示:__'''還挺吃記憶體的'''__ - [http://packages.debian.org/puppet Debian 有 puppet 套件] * 在另一個 mail list ([http://www.mail-archive.com/common-user@hadoop.apache.org/msg03589.html Best CFM Engine for Hadoop]) 中看到有人建議 [http://www.redhat.com/spacewalk/ Spacewalk](太空漫步), 連 Logo 都是太空漫步呢 :) * 根據 google trends 排行榜,cfengine 還是大獲全勝,至於 puppet 因為跟木偶同意,所以不準。初步選擇 cfengine, puppet 來看一下,至於需要資料庫的 SmartFrog 則排在第三順位。 * [[Image(wiki:jazz/10-03-31:10-03-31_cfengine_trends.png)]] == I/O Intensive Virtualization == * 最近 trac 一直不太順,本以為是有大量網路攻擊造成,但也觀察到另一個現象,就是虛擬機器的 host OS 若出現 IOWait 就會影響虛擬機器效能。跟 thomas 討論過,已知若採用 FLAT 格式的 VMDK 比較不會有這種問題,但是如果是支援 Copy-On-Write (COW) 動態成長的虛擬硬碟就容易有效能上的 overhead。因此這裡出現了一個新的問題,虛擬化平台上是否合適執行 I/O Intensive 的虛擬機器呢?? 還是最好讓虛擬機器直接掛載實體硬碟會比較妥當呢?? 先前也有聽過 Database 虛擬化之後,整體效能嚴重降低的問題,而 Hadoop 若放在 Xen 上跑,Cloudera 的 Christophe 似乎也不是非常建議。 * [[Image(10-03-31_vmhost-cpu-week.png)]] * [[Image(10-03-31_vmhost-memory-week.png)]] * [解決方法] 初步想到的解決方法: * VM 採用 local Disk Partition * VM 採用 iSCSI Disk or use Distributed/Parallel File System to share heavy I/O (分散 I/O 到多顆 Disk) * 當然最消極作為是 Data Intensive Job 最好還是在實體機器上跑。 * [注意事項] * 當然不管是當 Data Intensive 計算主機還是 VM Host 主機,都最好不要吃到 SWAP,否則只有一個字:「慘」!!! * 這也就代表....記憶體總容量比 CPU 多核重要 (跟上面講的還是一致,多核餵不飽,而且如果記憶體不夠大,更不可能餵飽它) * 先前 Hadoop 叢集常掛也是因為吃到 SWAP,現在 VM Host 雖然沒有掛,但卻造成 VM Client 嚴重的延遲。 * [研究議題] * 謎之聲:那最好的 "RAM GB / CPU Core 個數" 這個數值會是多少呢 ??? * Virtual I/O : I/O 如何虛擬化?? 先前看過 PCI Express 有支援 IOMMU ... * 系統監控、資源排程(Resource Scheduling and Provisioning)、動態負載平衡(Dynamic Load Balance)需要考慮平均 I/O 上限是否超出單台負載。 * 那麼 IOWait 有什麼好的解決知道呢?? - [參考文章] [http://www.cppblog.com/go-benny/archive/2008/04/23/47908.html IOWait 相關問題](簡) {{{ IOWait 高的一些處理方法 1、如果有使用 RAID,請檢查 RAID 的狀態,例如:是否正在重建或者沒有初始化 2、更換作業系統的核心,最好使用發行版標準的 Linux kernel,因為有比較多的修補 3、檢查 /proc/sys/vm 下面是否可以最佳化 4、是否使用了檔案系統,檔案系統是否有最佳化的選項,比如在 RAID5 上採用 xfs 文件系統時, 可以調節一些參數優化性能 5、客戶端程式是否產生了過大的壓力,比如磁碟的讀寫效能只有 10MB/s,每個執行緒的讀寫 速度為 5 MB/s,那麼如果讀寫執行緒個數為 20 的話,無疑會造成 IOWait 過高 6、查看進程狀態 ps -eo pid,user,wchan=WIDE-WCHAN-COLUMN -o s,cmd|awk ' $4 ~ /D/ {print $0}' lsof -p $pid 7、使用block_dump /etc/init.d/syslog stop echo 1 > /proc/sys/vm/block_dump sleep 60 dmesg | awk '/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \ print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \ head -n 10 echo 0 > /proc/sys/vm/block_dump /etc/init.d/syslog start }}} * [參考] [http://www.usenix.org/event/lisa09/training/tutonefile.html LISA'09 的 Tutorial 列了不少 performance tuning] {{{ * Performance tuning strategies o Practical goals o Monitoring intervals o Useful statistics o Tools, tools, tools * Server tuning o Filesystem and disk tuning o Memory consumption and swap space o System resource monitoring * NFS performance tuning o NFS server constraints o NFS client improvements o NFS over WANs o Automounter and other tricks * Network performance, design, and capacity planning o Locating bottlenecks o Demand management o Media choices and protocols o Network topologies: bridges, switches, and routers o Throughput and latency considerations o Modeling resource usage * Application tuning o System resource usage o Memory allocation o Code profiling o Job scheduling and queuing o Real-time issues o Managing response time ---------------- # High-performance I/O * Advanced file systems and the LVM * Disk striping * Optimizing I/O performance # Advanced compute-server environments * HPC with Beowulf * Clustering and high availability * Parallelization environments/facilities * CPU performance optimization # Enterprise-wide security features, including centralized authentication # Automation techniques and facilities # Linux performance tuning ---------------- # NFS performance tuning * NFS server constraints * NFS client improvements * NFS over WANs * Automounter and other tricks # Application tuning * System resource usage * Memory allocation * Code profiling * Job scheduling and queuing * Real-time issues * Managing response time ---------------- }}} == Mobile Computing == * 今天看到洪朝貴老師的 e 管家文章,雖然先前知道這東西,但沒啥動力要裝。倒是對老師文章中提到的手機作業系統排行榜有興趣。 * 根據 Garnter 的研究,到 2012 年,Symbian 跟 Android 會排手機作業系統的前兩名,第三名是 iPhone。[http://www.computerworld.com/s/article/9139301/Symbian_Android_will_be_top_smartphone_OSes_in_12_Gartner_reiterates 1] * 2009-05-29 : [http://www.webpronews.com/topnews/2009/05/27/comparing-smartphone-market-share-by-operating-system Comparing Smartphone Market Share by Operating System] - 這篇文章的圖蠻有意思的,說明了用 iPhone 看 HTML 網站的比例非常高,或許跟螢幕夠大有關吧 :) * Garnter 2009 年的研究,比例上手機作業系統排行是 Symbian (52%) > RIM (17%) > Windows (12%) > iPhone (8%) > > Plam (2%) = Other(2%) > Android (1%) 卻預測 2012 Android 會成長到 14% ,這真是個大膽的假設啊!! * [[Image(http://images.ientrymail.com/webpronews/article_pics/april-worldwide-smartphone2.jpg)]] * 也許最近這個消息讓 Garnter 敢如此大膽吧 - 2010-03-29: [http://www.ithome.com.tw/itadm/article.php?c=60324 AdMob:Android 上網流量超越 Symbian] * [[Image(http://www.ithome.com.tw/img/120/60324_1_1_l.gif)]] * [[Image(http://www.ithome.com.tw/img/120/60324_1_2_l.gif)]] * 當然也有人預估 Android 未來會因為__'''版本太多'''__而深受其害!! - 2010/03/30 : [http://www.zdnet.com.tw/news/comm/0,2000085675,20144819,00.htm Google 將處理 Android 版本過多問題?] * 當然台灣是硬體製造大國,手機更是亮眼的投資標地,而且 Android 在台灣本土已經有一些有趣的應用,像是 [http://www.smartapp.tw/aps/App/allSoftware_detail.action?appId=com.infofab.speedradar SpeedRadar 測速照相]、[http://www.smartapp.tw/aps/App/allSoftware_search.action i68 國道資訊 Live],看樣子去年很多人押寶 Android 也不是沒道理了 :) == DRBL related : High Availability and Configuration integrity == * 關於 HA 部分,最重要的應該是 [http://packages.debian.org/heartbeat heartbeat] 跟 [http://packages.debian.org/search?suite=all§ion=all&arch=any&searchon=names&keywords=DRBD DRBD],其中 heartbeat 已經有套件,drbd 應該是要裝 'drbd8-modules-版本' 模組套件,再搭配一些 util 套件來管理吧。 * [重點參考] [http://www.howtoforge.com/highly-available-nfs-server-using-drbd-and-heartbeat-on-debian-5.0-lenny Highly Available NFS Server Using DRBD And Heartbeat On Debian 5.0 (Lenny)] * 至於有時候設定檔到底有沒有被改掉呢,今天讀到一個檢查工具叫做 tripwire,也已經[http://packages.debian.org/tripwire 有 debian 套件]了。 * [http://www.rtfiber.com.tw/~changyj/linuxtips/html/tripwire-easy.html tripwire 簡易說明] * http://sourceforge.net/projects/tripwire/ - Open Source Tripwire * 還有另一個叫做 [http://afick.sourceforge.net/ AFICK (Another File Integrity Checker)]