2017-08-28 117 views
0

我正在訓練使用LuaTorch的模式。最近,我面臨一個惱人的問題。隨着時間的推移,程序運行越來越慢!當我執行 sudo sysctl -w vm.drop_caches=3 然後程序運行得更快。但是,大約一天之後,它又一次減速。我使用top檢查緩衝區和緩存,發現它們非常高。如何讓`lua執行cmd'sudo'命令而不需要手工輸入passwd`?

第一個問題:如果在訓練模型時使用該命令釋放緩衝區和緩存,那麼這很重要嗎? 我最初的想法是檢查每個紀元逝去的時間,並在逝去時間長於預設值時調用cmd命令。

if time_elapse > time_out then 
    os.execute('sudo sudo sysctl -w vm.drop_caches=3') 
end 

但是,它需要您第一次調用passwd manuly輸入。如何使用lua代碼來避免手動輸入代碼?

+0

你應該在你的代碼中找到問題,而不是做一些操作系統級別的詭計。 –

+0

'sudo'可以從標準輸入讀取密碼:'echo'password'| sudo -S命令「 –

回答

1

要直接回答您的問題:允許您的用戶在不輸入密碼的情況下執行sysctl -w vm.drop_caches=3命令。

如果名爲naruto的用戶正在運行您的lua腳本,請將以下行添加到/etc/sudoers(或者更好,請在/etc/sudoers.d中爲其創建一個文件)。

naruto ALL=(ALL) NOPASSWD: /usr/sbin/sysctl -w vm.drop_caches=3 

這將允許naruto作爲根執行的確切命令而無須提供口令。

至於潛在的問題,這裏有更多的研究。你永遠不會想要刪除頁面緩存。這只是一個緩存,而且這個內存並沒有被實際使用。通讀非常有幫助的頁面在http://www.linuxatemyram.com/,特別是,請在末尾警告標誌部分(見下文,從該頁面的引用):

警告標誌的正品內存不足情況那你可能想看看 到:

  • 可用內存(或「免費+緩衝區/高速緩存」)接近於零調劑
  • 用於增加或變動
  • dmesg | grep的OOM殺手顯示theOutOfMemory殺手在工作
1

sysctl -w vm.drop_caches=3通過強制換頁回主內存很可能加快你的進程。這可能意味着您的系統被配置爲過於積極地進行交換。您可以通過修改vm.swappiness來配置swappiness。許多Linux發行版將此值默認爲60。嘗試將其降低到10以鼓勵內核將您的進程保留在內存中。 swappiness Wikipedia entry有關於修改它的更詳細說明。這並不能回答你的直接問題,邁克釘住了這一點,但它可能有助於解決你的根本問題。

相關問題