長期実行Rスクリプトは自動的に終了します。

長期実行Rスクリプトは自動的に終了します。

私はかなり長い間(100%CPU使用率で最大24時間)実行する必要があるRスクリプトに関連するMSの論文実験を実行しようとしています。これはシングルコアプロセスであり、私が知っている限り作業を実行するのに十分なメモリがあります。問題は、一晩実行すると、何も開始せずに夜中にいつか終了することです。出力に関するアイデアを提供するために私が見ているものは次のとおりです。

➜  r-lda git:(master) ✗ Rscript slda-test-gibbs-1E6-01.r | tee slda-test-gibbs-1E6-01.log
Loading required package: lattice
Loading required package: ggplot2
Loading required package: methods
[1] "LOADING DATASET: data/split_1E6.dat"
[1] "DATASET LOADED"
[1] "TRAINING DATASET SIZE: 800000"
[1] "TESTING DATASET SIZE: 200000"
[1] "VOCAB SIZE: 129276"
[1] "TRAINING E=50 M=2 K=600"
[1]    17722 killed     Rscript slda-test-gibbs-1E6-01.r | 
       17723 done       tee slda-test-gibbs-1E6-01.log

これは多くの情報ではないことを知っていますが、この症状をさらに診断する方法は実際にはわかりません。もう二度こんなことが起きたのに何が起きたのかわかりません。私は一般的にRスクリプトをあまり使用しておらず、インターネット検索で実際の説明を見つけることができませんでした。私のシステムのアイデアを提供するには、次の手順を実行します。

➜  r-lda git:(master) ✗ uname -a
Linux ****** 4.2.5-1-ARCH #1 SMP PREEMPT Tue Oct 27 08:13:28 CET 2015 x86_64 GNU/Linux


➜  r-lda git:(master) ✗ head -n26 /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 60
model name      : Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz
stepping        : 3
microcode       : 0x12
cpu MHz         : 3499.863
cache size      : 8192 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bugs            :
bogomips        : 7015.72
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

➜  r-lda git:(master) ✗ free -h
              total        used        free      shared  buff/cache   available
Mem:            15G        3.4G         10G        291M        1.4G         11G
Swap:           15G        773M         15G

どんな洞察力でも大変感謝いたします。よろしくお願いします。

ベストアンサー1

始めるのに最適な場所はログを使用することです。アプリケーションログに有用な情報が表示されないと述べたので、dmesgやcronジョブなどのシステムログを確認する必要があります。 dmesgの一般的なエントリは、メモリ不足(OOM)エラーですが、利用可能なメモリが十分であると言います。衝突時間を取得するには、私が好む方法は次のように実行することです。

date; time command

どこ注文する実行されるプログラムです。プログラムがクラッシュした後の時間ごとに出力される時間と、プログラムが開始された日付別に出力される時間を加算すると、プログラムがクラッシュした時間を得ることができます。複数回実行し、同じ実行時間や競合時間などのパターンを探します。また、毎日同じ時間に始まらない毎日のcronjobを見てください。

他の原因は、プログラムのバグ、または32ビットポインタを使用すると、プログラムがより多くのメモリを割り当てられないことです。

おすすめ記事