Tôi có một khung công cụ bao gồm các công cụ khác nhau được viết bằng python trong môi trường đa người dùng.Làm thế nào để tăng tốc độ khởi động python và/hoặc giảm tìm kiếm tệp trong khi tải thư viện?
Lần đầu tiên tôi đăng nhập vào hệ thống và bắt đầu một lệnh, chỉ mất 6 giây để hiển thị một số dòng trợ giúp. Nếu tôi ngay lập tức phát hành cùng một lệnh một lần nữa nó mất 0.1s. Sau một vài phút, nó quay trở lại 6s. (bằng chứng về bộ nhớ cache ngắn ngủi)
Hệ thống nằm trên GPFS sao cho thông lượng đĩa phải ổn, mặc dù quyền truy cập có thể thấp do số lượng tệp trong hệ thống.
strace -e open python tool | wc -l
hiển thị 2154 tệp đang được truy cập khi khởi động công cụ.
strace -e open python tool | grep ENOENT | wc -l
hiển thị năm 1945 tệp bị thiếu đang được tìm kiếm. (Tỷ lệ hit/miss rất xấu là bạn hỏi tôi :-)
Tôi có linh cảm rằng thời gian quá tải liên quan đến việc tải công cụ được sử dụng bằng cách truy vấn GPFS về tất cả các tệp đó. gọi (ở cả cấp độ hệ thống hoặc GPFS), mặc dù tôi không biết cách kiểm tra/chứng minh nó. Tôi không có quyền truy cập root vào hệ thống và tôi chỉ có thể ghi vào GPFS và/tmp.
Có thể cải thiện điều này python quest for missing files
không?
Bất kỳ ý tưởng nào về cách kiểm tra điều này một cách đơn giản? (Cài đặt lại mọi thứ trên/tmp không đơn giản, vì có nhiều gói liên quan, virtualenv sẽ không giúp (tôi nghĩ), vì nó chỉ liên kết các tệp trên hệ thống gpfs).
Một tùy chọn sẽ là tất nhiên để có một daemon mà dĩa, nhưng đó là xa "đơn giản" và sẽ là một giải pháp nghỉ mát cuối cùng.
Cảm ơn bạn đã đọc.
Thật vậy, tôi đã thử cái này và trông có vẻ hứa hẹn, mặc dù tất cả các thư viện mặc định được chạy lúc khởi động và tôi không thể nói python từ tệp nào nên tải mô-đun, nhưng hãy để nó tìm kiếm trong thư mục, gây ra 4 cuộc gọi mở() và ít nhất 2 lần bỏ lỡ. Tôi chỉ ước rằng sẽ có một cách để nói với python không làm điều đó. – estani