01/10/2018, 14:41
Việc set limit time & memory cho process nhiều lần có tốt không?
Mình có các nhóm process, mỗi nhóm có 1 limit time & memory riêng:
- 1s, 256MB
- 2s, 512MB
- 1.5s, 300MB
- 4s, 1024MB
…
Có 2 hướng để thực thi các process này:
for process_group:
for process in process_group:
for limit in limit_group:
setlimit(limit)
run(process, limit)
hoặc
for limit in limit_group:
setlimit(limit)
for process_group:
for process in process_group:
run(process, limit)
Liệu làm theo cách 1 có tốt không (về mặt thời gian, mức độ làm việc của máy)? Hay phải chuyển sang cách 2?
Mình đang sử dụng Python.
Bài liên quan
như vậy 1 process nó run n lần dựa vào n limit ah?
bên dưới cũng tương tự.-.-
Đúng rồi ạ.
20 char…
Anh không có ý kiến, ko biết python nhờ @Gio xem nào -.-
Cho xin thông tin/code 2 hàm setilmit với run() đi HK Boy
Hàm setlimit:
Hàm run:
Lượn vài vòng thì thấy setrlimit gọi một system call cùng tên
Về việc khi gọi một system call khá tốn chi phí. Thế nên hãy hạn chế gọi nó.
Popen cũng gọi một system call khác là exec để thực thi binary, tạo ra child process.
Tuy nhiên về chi phí thực của 2 system call này như thế nào thì mình có search nhưng setrlimit thì không ra, bù lại exec thì đây:
stackoverflow.com
Is execv() expensive?
Và link trên cũng nói là việc gọi exec lần 2 sẽ ít tốn chi phí hơn. Thế nên theo ý kiến cá nhân với những gì hỏi anh Gồ được thì nhận xét TH2 code sẽ chạy tốt hơn vì việc gọi system call của nó ít hơn TH1, và việc gọi exec liên tục sẽ đỡ tốn chi phí hơn.
P/s: Vì HK Boy dùng module resource, nên code đang chạy trên môi trường linux -> đoạn trên chỉ nói cho linux là vậy