রিয়েল টাইম কেন ব্যবহারকারীর সময়ের চেয়ে কম হতে পারে


31

আমার কাছে একটি ফাইল ফাইল রূপান্তর করার স্ক্রিপ্ট রয়েছে এবং আমি এটি পরীক্ষার ডেটাতে সার্ভারে চালিত করি এবং এর সময়টি পরিমাপ করি time। ফলস্বরূপ আমি দেখেছি:

real    2m48.326s
user    6m57.498s
sys     0m3.120s

আসল সময়টি কেন ব্যবহারকারীর চেয়ে অনেক কম? মাল্টিথ্রেডিংয়ের সাথে এর কি কোনও সংযোগ আছে? বা আর কি?

সম্পাদনা করুন: এবং আমার মনে হয় যে স্ক্রিপ্টটি 2 মি 48 সর্পেন্ডে চলছিল


আপনার সম্পাদনাটি পুনরায় করুন - এটি সঠিক ধারণা দেয় কারণ realসময়টি দেয়ালের ঘড়ির সময় হিসাবে নীচে বর্ণিত (যেমন আমাদের স্টপ-ওয়াচ থাকলে আমরা কী পরিমাপ করব)
লেভন

উত্তর:


42

আপনার প্রদর্শিত আউটপুটটি কিছুটা বিশ্রী, যেহেতু আসল সময়টি সাধারণত অন্য দুটির চেয়ে বড় হয়।

  • Realসময় দেয়ালের ঘড়ির সময়। (স্টপওয়াচের সাহায্যে আমরা কী পরিমাপ করতে পারি)
  • User সময়টি প্রক্রিয়াটির মধ্যে ব্যবহারকারী-মোডে ব্যয় করার পরিমাণ
  • Sys প্রক্রিয়াটির মধ্যে কার্নেলের সিপিইউ সময় ব্যয় করা হয়।

সুতরাং আমি মনে করি যদি কাজটি একই সাথে বেশ কয়েকটি প্রসেসর দ্বারা করা হয়ে থাকে তবে সিপিইউ সময়টি অতিবাহিত প্রাচীর ঘড়ির সময়ের চেয়ে বেশি হবে।

এটি কি সমকালীন / বহু-থ্রেড / সমান্তরাল ধরণের অ্যাপ্লিকেশন ছিল?

যেমন একটি উদাহরণ হিসাবে, আমি time find .কমান্ডটি প্রকাশ করার সময় আমার লিনাক্স সিস্টেমে এটি পাওয়া যায় । যেমনটি প্রত্যাশা realকরা হয়েছে এই একক ব্যবহারকারীর / একক কোর প্রক্রিয়ার অন্যদের তুলনায় অতিবাহিত সময়টি অনেক বড়।

real    0m5.231s
user    0m0.072s
sys     0m0.088s

থাম্বের নিয়মটি হ'ল:

  • আসল <ব্যবহারকারী: প্রক্রিয়াটি সিপিইউ আবদ্ধ এবং একাধিক কোর / সিপিইউতে সমান্তরাল সম্পাদনের সুবিধা গ্রহণ করে।
  • আসল ≈ ব্যবহারকারী: প্রক্রিয়াটি সিপিইউযুক্ত এবং সমান্তরাল ছাড়ের কোনও সুবিধা নেয় না।
  • আসল> ব্যবহারকারী: প্রক্রিয়াটি I / O সীমাবদ্ধ। একাধিক কোরে মৃত্যুদন্ড কার্যকর করা কোনও লাভ হবে না।

আমি জানি না avconvমাল্টি-থ্রেডেড কিনা । এটা হতে পারে. avconvনতুন প্রজন্মের ffmpeg। আমি 7 টি সংক্ষিপ্ত flv ফাইল রূপান্তর করছিলাম (প্রতি 20 সেকেন্ডে)।
কোবিলেকি

আসল সময়টি সাধারণত অন্য দুজনের চেয়ে বড় হবে - তবে আমি অন্যান্য পরিস্থিতি সম্পর্কে জিজ্ঞাসা করি
কোবিলেকি

4
এই ব্যাখ্যা সঠিক। দেখে মনে হচ্ছে এই প্রক্রিয়াটি 4 টি কোরে চালিত হয়েছিল। রিয়েল / সিএস / ব্যবহারকারীর সময় কীভাবে গণনা করা হয় তার জন্য আমার হাইপারথ্রেডিংয়ের ব্যাখ্যাটি দেখুন । এটি ঠিক সম্পর্কিত হয় না, তবে ধারণাগুলি একই।
বাহামাত

@ কোবাইলেকি বাস্তব সময় অন্যদের চেয়ে কম কারণ এটি দেখে মনে হচ্ছে অ্যাভকনভ একাধিক কোরে চালিত হয়েছে। যেহেতু আমি সেই সফ্টওয়্যারটি জানি না, কীভাবে এটি চালিত হয়েছিল, তাই আমি 100% দাবি করতে চাই না, তবে উপলভ্য তথ্যের উপর ভিত্তি করে এটি দেখতে দেখতে (সময় পরিমাপের 3 টি লাইন এবং জ্ঞান: - )
লেভন

ইন findউদাহরণস্বরূপ usrমান অনেক কম কারণ অধিকাংশ সময় বিঘ্নিত সময় অতিবাহিত হয়েছে, এমনকি যদি findমাল্টি হতো এটা থাকুন কম হবে (দুঃখিত যদি আমি ইংরেজি ক্রিয়ার কাল মাস্টার করবেন না)।
ইমমানুয়েল

13

দু'টি থ্রেড প্রক্রিয়া সহ কিছু গণনা করা কী হয়েছে তা কেবল উদাহরণ দিয়ে দেখানোর জন্য।

/*a.c/*
    #include <pthread.h>
    static void  * dosomething () {
        unsigned long a,b=1;
        for (a=1000000000; a>0; a--) b*=3;
        return NULL;
    }
    main () {
        pthread_t one, two;
        pthread_create(&one,NULL, dosomething, NULL);
        pthread_create(&two,NULL, dosomething, NULL);
        pthread_join (one, NULL);
        pthread_join (two, NULL);
    }
/* end of a.c */

কম্পাইল

gcc a.c -lpthread

(এটি কেবল উদাহরণস্বরূপ, বাস্তব জীবনে আমার -D_REENTRANT পতাকা যুক্ত করা উচিত ছিল)

$ time ./a.out

real    0m7.415s
user    0m13.105s
sys     0m0.032s

(টাইমস একটি ইন্টেল পরমাণুতে রয়েছে যার দুটি ধীর গতি রয়েছে :))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.