網路城邦
上一篇 回創作列表 下一篇  字體:
少量多餐身體好
2013/12/14 21:51:58瀏覽686|回應0|推薦15

不要誤會我要談保健議題,不好意思,最近除了車牌辨識系統甚麼都沒空去想,所有文章都和這個主題有關,本文也不例外!

話說我的嘉義市路口監視系統上個月初步完成後,我以為是新開發的產品嘛,應該第一年會在有限區域內試運轉一段時間,來年再依據經費規模與運轉經驗逐步擴大到全市。但結果他們一開始就要在全嘉義市全面安裝!200多個路口監視器,搭配200多台(老舊)PC與我的客戶端程式,在前端每秒分析約十張即時影像,可能有車牌的照片就傳回到後端,有七台24核心的伺服器電腦做進一步辨識,分析結果再寫入資料庫以備查詢。

說實話我聽到他們的硬體規劃之後是目瞪口呆,被嚇出一身冷汗!不僅規模之大超出我的預期,這好像一個高中籃球員忽然被推上NBA的球場,還要當先發球員咧,沒被嚇死算我心臟夠大顆!而且在技術面,這個系統不僅很複雜,資料流量也很大,估計一個較繁忙的路口監視器一天可傳回約一萬張有效照片。加起來至少就是上百萬張照片會流回伺服器,每張照片都需要零點幾秒來計算辨識,為何是七台伺服器,不是八台?為何是24核心,不是32核心?

這些問題老闆連問都沒問過寫程式的我:「到底這樣安排處理能力夠不夠?」他就是先斬後奏,直接買好與裝好硬體,接下來就是要我讓系統可以順利運轉!如果資料塞車或某些環節卡住,好像就都是因為我不夠專業,這樣夠恐怖了吧?

前面幾天最煩惱的是處理流量的能力真的不夠,七台中有三四台會塞車,就是前端送來的照片後端來不及消化,一天下來可以積個幾十萬張處理不完,第二天又開始了!所以如前一篇文章說的,我最近睡覺很不安穩,常常會罵人!首先我必須努力讓多核心電腦充分發揮它們的效能,就是調整程式為多執行緒,且在線上調整各種參數到速度最快的狀態。我是會做這種程式,但是真的在這麼大的系統與超規格電腦上執行這麼多個執行緒的程式,在以前只有作夢時夢到過!

將程式本身調到最快之後我發現還是有兩台機器不夠快,每一台伺服器雖稱規格相同,但是極速卻不一樣,最快的一台分配到的監視器卻流量極低,最慢的反而配到最繁忙的路口,真是手氣欠佳啊!我原本最壞的打算是請他們依據資料流量重新分配各監視器對應的伺服器,這樣看起來整體上是夠用的。

但是這對於驕傲的我來說有點漏氣,而且我發現當伺服器電腦累積檔案太多(超過萬張)時,會讓處理速度下降很多(一半以下)!就是越塞車走越慢,資料進來越多,出去的卻越慢,所以一個晚上不但沒有藉著離峰時段處理完累積的資料,還龜速前進,越積越多!如果某伺服器網路斷了一小時,資料積到上萬張,系統可以說就開始惡性循環,越跑越慢積檔越多,總之是死定了!問題真的很嚴重!

速度變慢的原因是每一回合處理資料,無可避免的要將輸入檔案的目錄「點名」一遍,再一一取出檔案加以處理,好像一個一百多人上課的大班級,光是點名就浪費掉十分鐘。也如同你一頓飯根本吃不了多少,但是每餐都堅持擺出滿漢全席的話,擺完所有菜就到了下一餐吃飯的時間了,所以反而沒有吃飯的時間了!

所以啦!我依據少量多餐的概念,將大池子裡的檔案不論是幾十萬張,一次只取出數百張,做完再去批發一次,這樣程式實際處理的檔案總數,一直控制在不超過千張的尺度,運算速度就可以保持在最高檔。剛剛完成了程式更新,目前看起來所有伺服器都在快速消化著前兩天留下的十多萬張資料。關關難過關關過,看來我又過關了!這次的問題解決關鍵居然是:「少量多餐身體好」?哈哈!

( 心情隨筆校園筆記 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=9923433