12345678910111213141516171819202122232425262728 |
- import os
- import time
- import psutil
- import signal
- from datetime import datetime
- MEMORY_LIMIT = 10 * 1024 * 1024 * 1024 # 10GB
- CHECK_INTERVAL = 1 # seconds
- def check_memory():
- for proc in psutil.process_iter(['pid', 'memory_info', 'cmdline']):
- if '/data/fangjiasheng/format_conversion_maxcompute/format_convert' not in str(proc.info['cmdline']):
- continue
- if proc.info['memory_info'].rss > MEMORY_LIMIT:
- # os.kill(proc.info['pid'], signal.SIGTERM)
- print(proc.info['pid'], 'memory', round(proc.info['memory_info'].rss / 1024 / 1024 / 1024, 2), 'GB >', '15GB', proc.info['cmdline'][-2])
- os.system('kill -9 ' + str(proc.info['pid']))
- print('killed', str(proc.info['pid']), datetime.now())
- # else:
- # print(proc.info['pid'], 'memory', round(proc.info['memory_info'].rss / 1024 / 1024 / 1024, 2), 'GB', proc.info['cmdline'][-2])
- if __name__ == '__main__':
- while True:
- check_memory()
- time.sleep(CHECK_INTERVAL)
- # print('loop')
|