科学モデルを実行する前に、およびを呼び出すcshスクリプトを実行していますunlimit
。limit
スクリプトは次のとおりです(簡潔にするために切り捨て)。
#!/bin/csh -f
# ...
unlimit
limit
/usr/bin/time $BLD/$EXEC # Where `$BLD/$EXEC` is the path to the model
date
exit
スクリプトを実行すると、次のエラーが発生します。
unlimit
unlimit: memorylocked: Can't remove limit
unlimit: maxproc: Can't remove limit
unlimit: openfiles: Can't remove limit
Bashで確認してくださいulimit
。
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63711
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63711
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
unlimit
(リソースを指定せずに)cshで次のことを試してください。
$ sudo csh
# unlimit
unlimit: memorylocked: Can't remove limit
unlimit: maxproc: Can't remove limit
unlimit: openfiles: Can't remove limit
limit
csh出力とunlimit
指定されたリソースを使用しようとしました:
$ sudo csh
# whoami
root
# limit
cputime unlimited
filesize unlimited
datasize unlimited
stacksize 8192 kbytes
coredumpsize 0 kbytes
memoryuse unlimited
memorylocked 64 kbytes
maxproc 63711
openfiles 1024
# unlimit openfiles
unlimit: openfiles: Can't remove limit
# unlimit memorylocked
unlimit: memorylocked: Can't remove limit
私はUbuntu 14.04を実行しています:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty
私はモデルを実行する前にrunがすべてのリソース制約を削除しなければならないと思いunlimit
、出力でlimit
これを確認する必要があります。ルートユーザーが制限を削除できないのはなぜですか?unlimit
ルートとしてのみ実行できますか?
ベストアンサー1
ulimit は、システム全体の sysctl で構成された最大使用量を超えて、これらのリソースの最大使用量を増やそうとします。また、オープンファイルなどの特定のリソースを無制限に使用してLinuxを構成することは物理的に不可能です。
すべてのリソースを制限するのは良い考えではありません。モデルが失敗した場合、実際には数GBのコアダンプが必要ですか?モデルの実行時にボトルネックを引き起こすリソースのみを追加してください。モデルを正常に実行できるため、コードは、元々作成されたコンピュータよりも最新のコンピュータでより多くのリソースを使用できることを意味します。