機密的視窗:早起的鳥兒和晚睡的貓頭鷹

當您想要自動執行此過程的共用資源時,每一個小細節很重要。

Raymond Chen

靈活的工作時間要求靈活的程式和步驟。 在微軟的時候,需要一個漫長而複雜的計算有一個研究專案。 研究小組認為他們能有效地處理利用的產品團隊的 Cpu 的計算能力,當機器晚上被人棄置的計算。

他們開發出他們想使用的電腦上安裝的程式。 當它被踢掉時,它要求伺服器的一些工作。 它起動機走在整理,然後上傳結果。 基本上,該研究小組發明了類似于 Folding@home 或 SETI@home 年之前存在的那些專案。

您必須通過指定想讓它成為可用於計算的時間,想讓它停止的時間配置的資源分享的程式。 這樣一來,它不會打斷你當你仍在審查設計檔的工作。 不是一開始其無往不利和珍貴的記憶體和 CPU 週期時使用您還在焦急地等待您生成完成。

團隊的努力

產品小組人民盡職盡責地同意提供他們的機器。 然而,他們發現不工作時,"指定期間的一天,期間要將可用於計算程式"功能。 該程式是不斷地醒來,打擾他們。 更糟的,它使其系統運行很慢的權利,在工作一天的中間。

最終,研究小組發現了問題的根源。 確定何時運行計算的代碼去像這樣:

time = GetTimeOfDay(); if (time < StopTime || time >= StartTime) { CrunchTheNumbers(); }

換句話說,它運行計算,如果當前時間的停止時間之前或之後的開始時間。

研究小組成員設置其停止時間為 9:00 或 9 上午 當他們到達了所有通常每天早上上班的。 他們也將他們的開始時間設置為 17:00,5 下午 當他們離開回家的工作。

產品團隊的人還設置其停止時間為 9:00 或 9 上午 但是,他們設置其開始時間 1:00,或 1 上午,因為它們有時工作到深夜,不想打斷他們的數位計算常式。

正如您看到的代碼,如果您設置您開始時間至午夜 12 時或更高版本,數位處理工具結束跑了一天。 顯然,研究小組的人永遠不會晚工作。

諷刺的是,花研究小組少數反覆運算之前他們找到正確的演算法來確定何時運行數克郎。 有時甚至天才有平衡他們這麻煩。

壞的批次處理

當我遇到了類似的情況很久以前,我是這個故事的提醒。 有一些工具來分析資料揭開序幕的批次檔。 有零星報導在批次檔有時會停止工作,吐出消息,"內部錯誤,請聯繫,XYZ 的支援團隊。"

如果您發送一封電子郵件給報告錯誤,XYZ 支援團隊,他們會寫回,"我們不能重現此錯誤。 我們已經打開了診斷程式在伺服器上。 請再試一次,和我們將學習日誌檔"。第二次運行該批次檔,它總是成功。

他們最終確定問題的原因:該批次檔將嘗試生成日誌檔的名稱,從當前日期和時間。 這樣做的時間 %和 %日期 %環境變數中提取子字串。 如果你在 10 上午之前運行此程式時,提取的時間了前導空格,並計算搞砸了。

因為保持該批次檔的人沒進前 10 上午工作定居 還是如此,他們寫回信說,"現在再試試"的時候,它已經 10:30 上午 錯誤不再出現。 剛剛通過的時間有點長比以往要完成他們早上喝咖啡,成員的支援團隊設法避免 bug,躲在自己的工具。

Raymond Chen

Raymond Chen Web 網站、 舊的新事物和相類似的標題書 (艾迪生 - 韋斯,2007年) 處理 Windows 歷史、 Win32 程式設計和牆和階梯的假想遊戲。

相關的內容