Linux

後台執行 wineconsole 時 CPU 使用率高

  • April 6, 2015

我有一個(非常簡單的)Windows 控制台應用程序,我想使用 Wine 在 Linux 伺服器上執行它。當我只是通過 SSH 從終端執行它時

wine myapp.exe

一切都很好。它執行良好,一切正常,CPU 使用率很低(大約 5%)。

當我嘗試在後台執行它時,問題就開始了。即使是簡單的事情,比如

nohup wine myapp.exe

導致 CPU 使用率飆升至 100%(一個完整的核心)。將輸出重定向到 /dev/null 等沒有幫助。

我嘗試使用具有以下設置的新貴執行它:

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec sudo -H -u myuser wine /path/to/my/app.exe &> /dev/null

CPU 使用率為 100%。我嘗試了更多選項,直到我發現以下版本(使用 wineconsole 代替 wine 並且將“-b”開關添加到 sudo)工作得很好(CPU 使用率 5-7%):

exec sudo -b -H -u myuser wineconsole /path/to/my/app.exe

問題是,如果我這樣執行它,upstart 不會跟踪 pid,因此 respawn 等不起作用。當我在配置中添加“expect-fork”時,CPU 使用率再次上升到 100%。當我添加重定向到 /dev/null 時,CPU 使用率上升到 100%。基本上我所做的任何事情都會導致 CPU 使用率上升到 100%。

你有什麼想法可能導致這種影響嗎?

終於找到了問題的根源和解決方案(雖然解決方案肯定不完美)。

該問題實際上是由輸入重定向引起的。當鍵盤輸入被 /dev/null 取代時,wine 或程序中的某些東西(我沒有調查它)似乎進入了一個快速執行的無限循環,這會導致高 CPU 負載。

我找到的解決方案是將“控制台所有者”添加到 Upstart 配置中,以便將程序連接到控制台。之後我什至能夠正確重定向輸出:)

由於程序在數據中心的專用伺服器上執行,因此此設置似乎不會造成任何問題。

引用自:https://serverfault.com/questions/573350