আমি জাভাতে কম্পিউটারের সিপিইউ, মেমরি এবং ডিস্ক ব্যবহার কীভাবে পর্যবেক্ষণ করব?


180

আমি জাভাতে নিম্নলিখিত সিস্টেমের তথ্য পর্যবেক্ষণ করতে চাই:

  • বর্তমান সিপিইউ ব্যবহার ** (শতাংশ)
  • উপলব্ধ মেমরি * (বিনামূল্যে / মোট)
  • উপলব্ধ ডিস্কের স্থান (বিনামূল্যে / মোট)

    * নোট করুন যে আমি বোঝাতে চাইছি পুরো সিস্টেমের জন্য সামগ্রিক মেমরি কেবল জেভিএম নয়।

আমি একটি ক্রস-প্ল্যাটফর্ম সমাধান (লিনাক্স, ম্যাক এবং উইন্ডোজ) খুঁজছি যা আমার নিজের কোডের উপর নির্ভর করে না বাহ্যিক প্রোগ্রামগুলিতে ফোন করে বা জেএনআই ব্যবহার করে। যদিও এটি ব্যবহারযোগ্য বিকল্প, তবে কারওর ইতিমধ্যে আরও ভাল সমাধান থাকলে আমি নিজে ওএস-নির্দিষ্ট কোড বজায় না রাখতে পছন্দ করব to

যদি এখানে কোনও ফ্রি লাইব্রেরি থাকে যা এটি নির্ভরযোগ্য, ক্রস প্ল্যাটফর্ম পদ্ধতিতে করে, তবে তা দুর্দান্ত হবে (যদিও এটি বাহ্যিক কল করে বা দেশীয় কোড নিজেই ব্যবহার করে)।

কোন পরামর্শ অনেক প্রশংসা করা হয়।

স্পষ্ট করতে, আমি কেবল জাভা প্রক্রিয়া (এস) নয় পুরো সিস্টেমের জন্য বর্তমান সিপিইউ ব্যবহার করতে চাই।

একটি সিটি প্যাকেজে আমি যে সমস্ত কার্যকারিতা সন্ধান করছি সেগুলি সিআরআই এপিআই সরবরাহ করে, সুতরাং এটি আমার প্রশ্নের সেরা উত্তর। তবে এটি জিপিএল-এর অধীনে লাইসেন্স পাওয়ার কারণে, আমি এটি আমার মূল উদ্দেশ্যে (একটি বদ্ধ উত্স, বাণিজ্যিক পণ্য) ব্যবহার করতে পারি না। এটা সম্ভব যে হাইপারিক সিআইসিকে বাণিজ্যিক ব্যবহারের জন্য লাইসেন্স দিতে পারে, তবে আমি এটি সন্ধান করি নি। আমার জিপিএল প্রকল্পগুলির জন্য, আমি অবশ্যই ভবিষ্যতে সিগারিকে বিবেচনা করব।

আমার বর্তমান প্রয়োজনের জন্য, আমি নিম্নলিখিতগুলির দিকে ঝুঁকছি:

  • সিপিইউ ব্যবহারের জন্য, OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()(প্রতি সিপিইউতে গড় লোড)
  • স্মৃতির জন্য, OperatingSystemMXBean.getTotalPhysicalMemorySize()এবংOperatingSystemMXBean.getFreePhysicalMemorySize()
  • ডিস্ক স্পেসের জন্য, File.getTotalSpace()এবংFile.getUsableSpace()

সীমাবদ্ধতা:

getSystemLoadAverage()(অর্থাত রিপোর্ট করা হয়েছে এবং ডিস্ক স্থান কুয়েরিং পদ্ধতি শুধুমাত্র উপলব্ধ জাভা 6. এছাড়াও অধীনে, কিছু JMX কার্যকারিতা সমস্ত প্ল্যাটফর্মের জন্য উপলব্ধ নাও হতে পারে getSystemLoadAverage()আয় -1 Windows এ)।

যদিও মূলত জিপিএল অধীনে লাইসেন্স করা, এটা পরিবর্তন করা হয়েছে থেকে Apache 2.0 লাইন্সের , যা সাধারণত বদ্ধ উৎস, বাণিজ্যিক পণ্যের জন্য ব্যবহার করা যাবে।


স্পষ্ট করার জন্য, সিগার এপিআই আপনাকে সিস্টেমের তথ্য দেয়। আপনি যদি জেভিএম তথ্য চান তবে জেএমএক্স ব্যবহার করুন।
ম্যাট কামিংস

সিপিএল জিপিএলের অধীনে থাকা আপনাকে এটি ব্যবহার থেকে বিরত রাখে না, এর অর্থ কেবল আপনাকে লেখকদের সাথে যোগাযোগ করতে হবে এবং বিকল্প লাইসেন্সের জন্য অনুরোধ করতে হবে। লেখকরা প্রায়শই একটি সামান্য ফি গ্রহণ করে এবং বাণিজ্যিক লাইসেন্স দেওয়ার অনুমতি নিয়ে খুশি হন।
আলেক থমাস

7
সংস্করণ ১.6.৪ থেকে সিআরার অ্যাপাচি লাইসেন্স ব্যবহার করছে।
সাউন্ডলিঙ্ক

আপনি কি জানেন যে প্রতিটি পৃথক প্রসেসরের জন্য লোড কীভাবে পাবেন?
zcaudate

উত্তর:


67

আমি এই পোস্টে যা উল্লেখ করেছি তার লাইনের সাথে । আমি আপনাকে সিআরআইপিআই ব্যবহার করার পরামর্শ দিচ্ছি । আমি আমার নিজস্ব অ্যাপ্লিকেশনগুলির একটিতে সিআরআই এপিআই ব্যবহার করি এটি দুর্দান্ত। আপনি এটি স্থিতিশীল, ভাল সমর্থিত এবং দরকারী উদাহরণে পূর্ণ দেখতে পাবেন। এটি জিপিএল 2 অ্যাপাচি 2.0 লাইসেন্স সহ ওপেন সোর্স । এটা দেখ. আমি এটি আপনার প্রয়োজন মেটাবে একটি অনুভূতি আছে।

জাভা এবং সিগার এপিআই ব্যবহার করে আপনি মেমোরি, সিপিইউ, ডিস্ক, লোড-অ্যাভারেজ, নেটওয়ার্ক ইন্টারফেসের তথ্য এবং মেট্রিক্স, প্রক্রিয়া সারণির তথ্য, রুটের তথ্য ইত্যাদি পেতে পারেন can


14
সিগার ব্যবহার করার সময় সাবধান হন, এক্স 64 মেশিনে সমস্যা আছে ... স্ট্যাকওভারফ্লো . com/ প্রশ্নস / 23405832/ … এবং মনে হয় এটি 2010 থেকে গ্রন্থাগারটি আপডেট হয় না
আলভারো

56

নিম্নলিখিত অনুমিতভাবে আপনি সিপিইউ এবং র‌্যাম পেয়েছেন। আরও তথ্যের জন্য ম্যানেজমেন্টফ্যাক্টরী দেখুন ।

import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

private static void printUsage() {
  OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
  for (Method method : operatingSystemMXBean.getClass().getDeclaredMethods()) {
    method.setAccessible(true);
    if (method.getName().startsWith("get")
        && Modifier.isPublic(method.getModifiers())) {
            Object value;
        try {
            value = method.invoke(operatingSystemMXBean);
        } catch (Exception e) {
            value = e;
        } // try
        System.out.println(method.getName() + " = " + value);
    } // if
  } // for
}

3
উপরের কোডের জন্য নমুনা আউটপুট। এই কোডটি জাভা 1.5 তে কাজ করে। getCommittedVirtualMemorySize = 28622848 getFreePhysicalMemorySize = 228462592 getFreeSwapSpaceSize = 1129848832 getProcessCpuTime = 390625000 getTotalPhysicalMemorySize = 2147483647 getTotalSwapSpaceSize = 4294967295
blak3r

AFAIK getProcessCpuTime = 390625000 কেবল সেই থ্রেডটি কতক্ষণ চলছে। প্রসেসরের ব্যবহার নির্ধারণের জন্য এটি সত্যই কার্যকর নয়
মাইকেরনেসন

2
এটি সত্যিকারের নির্ভরযোগ্য নয়। 4 জিবি শারীরিক মেমরি সহ উইন্ডোজ এক্সপিতে এটি কেবল 2 জিবি (জাভা 6 এবং জাভা 7 এর সাথে পরীক্ষিত) প্রতিবেদন করে। মোট সোয়াপ আকারও ভুল।
এমানুয়েল বার্গ

4
@ এমমানুয়েলবার্গ কেবল এই বিষয়টি দেখার জন্য তাদের ডকুমেন্ট করতে, এর সাথে সম্পর্কিত একটি বাগ রয়েছে
সেরজিও মিশেলস

2
এই পদ্ধতিটি জাভা 9 অবধি দুর্দান্ত কাজ করেছে, এটি এখন নতুন জাভাসি চেকিং ফ্রেমওয়ার্ক জাভা ব্যবহার করছে বলে java.lang.reflect.InaccessibleObjectException নিক্ষেপ করে।
থোর ল্যাঙ্কাস্টার

40

JDK 1.7 এ, আপনি সিস্টেম সিপিইউ এবং মেমরির মাধ্যমে পেতে পারেন com.sun.management.OperatingSystemMXBean। এটির চেয়ে আলাদা java.lang.management.OperatingSystemMXBean

long    getCommittedVirtualMemorySize()
Returns the amount of virtual memory that is guaranteed to be available to the running process in bytes, or -1 if this operation is not supported.

long    getFreePhysicalMemorySize()
Returns the amount of free physical memory in bytes.

long    getFreeSwapSpaceSize()
Returns the amount of free swap space in bytes.

double  getProcessCpuLoad()
Returns the "recent cpu usage" for the Java Virtual Machine process.

long    getProcessCpuTime()
Returns the CPU time used by the process on which the Java virtual machine is running in nanoseconds.

double  getSystemCpuLoad()
Returns the "recent cpu usage" for the whole system.

long    getTotalPhysicalMemorySize()
Returns the total amount of physical memory in bytes.

long    getTotalSwapSpaceSize()
Returns the total amount of swap space in bytes.

5
দেখে মনে হচ্ছে এটি হিট এবং মিস হয়েছে। পথ -1 CPU- র লোড জন্য FreeBSD 'র 10 এবং OpenJDK 8. উপর
cen

এই প্রশ্নটি stackoverflow.com/q/19781087/1206998 দেখুন । এটি বলে যে এটি কার্যকর হতে দম্পতিদের কয়েক সেকেন্ড সময় নেয়। (দ্রষ্টব্য: আমি চেষ্টা করিনি)
জুহ_

25

এটি কোনও বাহ্যিক এপিআই ছাড়াই আমার পক্ষে নিখুঁতভাবে কাজ করে, কেবল নেটিভ জাভা লুকানো বৈশিষ্ট্য :)

import com.sun.management.OperatingSystemMXBean;
...
OperatingSystemMXBean osBean = ManagementFactory.getPlatformMXBean(
                OperatingSystemMXBean.class);
// What % CPU load this current JVM is taking, from 0.0-1.0
System.out.println(osBean.getProcessCpuLoad());

// What % load the overall system is at, from 0.0-1.0
System.out.println(osBean.getSystemCpuLoad());

আমি সত্যই এটির সেরা উত্তরটি খুঁজে পাই, লিনাক্সে কাজ করি তাই আমি খুশি ফেল্লা।
আর্সেনআরসেন

1
কোনও ক্লু কেন ২ য় প্রার্থনা 0.0 দেখায়? ওপেনজেডিকে ভি 8-এ।
ভর্বার্গার

ভুলে যাবেন না: "আমদানি করুন java.lang.management.MageagementFactory;"
বারেন্ড

1
getProcessCpuLoad এবং getSystemCpuLoad ফিরুন -1 আমাকে ফর্ম করুন। আমি jdk 1.8 ব্যবহার করছি
Burak Akyıldız

থ্রেড কাউন্ট পাওয়ার কোনও পদ্ধতি নেই? শুধু ভাবছি কেন?
জাঙ্গোফান

16

খুব বিস্তারিতভাবে এই নিবন্ধটি দেখুন: http://nadeausoftware.com/articles/2008/03/java_tip_how_get_cpu_and_user_time_benchmarking#UsingaSuninternclasstogetJVMCPUtime

ব্যবহৃত সিপিইউর শতাংশ পাওয়ার জন্য আপনার প্রয়োজন কয়েকটি সাধারণ গণিত:

MBeanServerConnection mbsc = ManagementFactory.getPlatformMBeanServer();

OperatingSystemMXBean osMBean = ManagementFactory.newPlatformMXBeanProxy(
mbsc, ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME, OperatingSystemMXBean.class);

long nanoBefore = System.nanoTime();
long cpuBefore = osMBean.getProcessCpuTime();

// Call an expensive task, or sleep if you are monitoring a remote process

long cpuAfter = osMBean.getProcessCpuTime();
long nanoAfter = System.nanoTime();

long percent;
if (nanoAfter > nanoBefore)
 percent = ((cpuAfter-cpuBefore)*100L)/
   (nanoAfter-nanoBefore);
else percent = 0;

System.out.println("Cpu usage: "+percent+"%");

দ্রষ্টব্য: আপনার অবশ্যই আমদানি করা উচিত com.sun.management.OperatingSystemMXBeanএবং নাও java.lang.management.OperatingSystemMXBean


এটি সত্যিই ভাল উত্তর। অন্যান্য সমস্ত কৌশল সত্যই অদ্ভুত এবং অবিশ্বাস্য ফলাফল দেয়, তবে এটির পিছনে গড়পড়তা গড়পড়তা আমার সাথে মনোহর মতো কাজ করে।
ফ্র্যাক্টালি

যখন সিপিইউ সময় অতিবাহিত সময়ের চেয়ে বেশি হয় (আমি 100% এরও বেশি পাই) তখন এটি কি কেবল মাল্টিথ্রেডিংয়ের কারণে, বা কীভাবে এটি বোঝা যায়?
লুকাস হানাসেক

8

ডিস্ক স্পেসের জন্য, আপনার জাভা 6 থাকলে আপনি ফাইলে getTotalSpace এবং getFreeSpace পদ্ধতি ব্যবহার করতে পারেন । আপনি যদি জাভা 6 এ না থাকেন তবে আমি বিশ্বাস করি যে আপনি কিছু উপায় পেতে অ্যাপাচি কমন্স আইও ব্যবহার করতে পারেন ।

আমি সিপিইউ ব্যবহারের কোনও ক্রস প্ল্যাটফর্ম উপায় বা মেমরির ব্যবহারের ভয় জানি না।


6

এর অনেক কিছুই জেএমএক্সের মাধ্যমে ইতিমধ্যে উপলব্ধ। জাভা 5 এর সাথে, জেএমএক্স অন্তর্নির্মিত এবং সেগুলিতে জেডিএকে একটি জেএমএক্স কনসোল ভিউয়ার অন্তর্ভুক্ত।

আপনি নিজে নিজে নজরদারি করতে জেএমএক্স ব্যবহার করতে পারেন, বা জাভা থেকে জেএমএক্স কমান্ডগুলি আবেদন করতে পারেন যদি আপনার নিজের রান-টাইমে এই তথ্য প্রয়োজন হয়।


6

২০০৮ সালে গৃহীত উত্তরটি সিগির সুপারিশ করেছিল। তবে, ২০১৪ সালের একটি মন্তব্য হিসাবে (@ আলভারো) বলেছেন:

সিগার ব্যবহার করার সময় সাবধান হন, এক্স 64 মেশিনে সমস্যা আছে ... সিগার 1.6.4 ক্র্যাশ হচ্ছে: এক্সেসিপশন_এসিএসসি_ভিওলেশন এবং এটি দেখে মনে হয় যে লাইব্রেরিটি ২০১০ সাল থেকে আপডেট হয়নি

আমার প্রস্তাবটি https://github.com/oshi/oshi ব্যবহার করা

অথবা উপরে উল্লিখিত উত্তর


4
/* YOU CAN TRY THIS TOO */

import java.io.File;
 import java.lang.management.ManagementFactory;
// import java.lang.management.OperatingSystemMXBean;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.management.RuntimeMXBean;
 import java.io.*;
 import java.net.*;
 import java.util.*;
 import java.io.LineNumberReader;
 import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
import java.lang.management.ManagementFactory;
import java.util.Random;



 public class Pragati
 {

     public static void printUsage(Runtime runtime)
     {
     long total, free, used;
     int mb = 1024*1024;

     total = runtime.totalMemory();
     free = runtime.freeMemory();
     used = total - free;
     System.out.println("\nTotal Memory: " + total / mb + "MB");
     System.out.println(" Memory Used: " + used / mb + "MB");
     System.out.println(" Memory Free: " + free / mb + "MB");
     System.out.println("Percent Used: " + ((double)used/(double)total)*100 + "%");
     System.out.println("Percent Free: " + ((double)free/(double)total)*100 + "%");
    }
    public static void log(Object message)
         {
            System.out.println(message);
         }

        public static int calcCPU(long cpuStartTime, long elapsedStartTime, int cpuCount)
        {
             long end = System.nanoTime();
             long totalAvailCPUTime = cpuCount * (end-elapsedStartTime);
             long totalUsedCPUTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime()-cpuStartTime;
             //log("Total CPU Time:" + totalUsedCPUTime + " ns.");
             //log("Total Avail CPU Time:" + totalAvailCPUTime + " ns.");
             float per = ((float)totalUsedCPUTime*100)/(float)totalAvailCPUTime;
             log( per);
             return (int)per;
        }

        static boolean isPrime(int n)
        {
     // 2 is the smallest prime
            if (n <= 2)
            {
                return n == 2;
            }
     // even numbers other than 2 are not prime
            if (n % 2 == 0)
            {
                return false;
            }
     // check odd divisors from 3
     // to the square root of n
         for (int i = 3, end = (int)Math.sqrt(n); i <= end; i += 2)
         {
            if (n % i == 0)
         {
         return false;
        }
        }
 return true;
}
    public static void main(String [] args)
    {
            int mb = 1024*1024;
            int gb = 1024*1024*1024;
             /* PHYSICAL MEMORY USAGE */
             System.out.println("\n**** Sizes in Mega Bytes ****\n");
            com.sun.management.OperatingSystemMXBean operatingSystemMXBean = (com.sun.management.OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean();
            //RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
            //operatingSystemMXBean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
            com.sun.management.OperatingSystemMXBean os = (com.sun.management.OperatingSystemMXBean)
            java.lang.management.ManagementFactory.getOperatingSystemMXBean();
            long physicalMemorySize = os.getTotalPhysicalMemorySize();
            System.out.println("PHYSICAL MEMORY DETAILS \n");
            System.out.println("total physical memory : " + physicalMemorySize / mb + "MB ");
            long physicalfreeMemorySize = os.getFreePhysicalMemorySize();
            System.out.println("total free physical memory : " + physicalfreeMemorySize / mb + "MB");
            /* DISC SPACE DETAILS */
            File diskPartition = new File("C:");
            File diskPartition1 = new File("D:");
            File diskPartition2 = new File("E:");
            long totalCapacity = diskPartition.getTotalSpace() / gb;
            long totalCapacity1 = diskPartition1.getTotalSpace() / gb;
            double freePartitionSpace = diskPartition.getFreeSpace() / gb;
            double freePartitionSpace1 = diskPartition1.getFreeSpace() / gb;
            double freePartitionSpace2 = diskPartition2.getFreeSpace() / gb;
            double usablePatitionSpace = diskPartition.getUsableSpace() / gb;
            System.out.println("\n**** Sizes in Giga Bytes ****\n");
            System.out.println("DISC SPACE DETAILS \n");
            //System.out.println("Total C partition size : " + totalCapacity + "GB");
            //System.out.println("Usable Space : " + usablePatitionSpace + "GB");
            System.out.println("Free Space in drive C: : " + freePartitionSpace + "GB");
            System.out.println("Free Space in drive D:  : " + freePartitionSpace1 + "GB");
            System.out.println("Free Space in drive E: " + freePartitionSpace2 + "GB");
            if(freePartitionSpace <= totalCapacity%10 || freePartitionSpace1 <= totalCapacity1%10)
            {
                System.out.println(" !!!alert!!!!");
            }
            else
                System.out.println("no alert");

            Runtime runtime;
            byte[] bytes;
            System.out.println("\n \n**MEMORY DETAILS  ** \n");
            // Print initial memory usage.
            runtime = Runtime.getRuntime();
            printUsage(runtime);

            // Allocate a 1 Megabyte and print memory usage
            bytes = new byte[1024*1024];
            printUsage(runtime);

            bytes = null;
            // Invoke garbage collector to reclaim the allocated memory.
            runtime.gc();

            // Wait 5 seconds to give garbage collector a chance to run
            try {
            Thread.sleep(5000);
            } catch(InterruptedException e) {
            e.printStackTrace();
            return;
            }

            // Total memory will probably be the same as the second printUsage call,
            // but the free memory should be about 1 Megabyte larger if garbage
            // collection kicked in.
            printUsage(runtime);
            for(int i = 0; i < 30; i++)
                     {
                         long start = System.nanoTime();
                        // log(start);
                        //number of available processors;
                         int cpuCount = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
                         Random random = new Random(start);
                         int seed = Math.abs(random.nextInt());
                         log("\n \n CPU USAGE DETAILS \n\n");
                         log("Starting Test with " + cpuCount + " CPUs and random number:" + seed);
                         int primes = 10000;
                         //
                         long startCPUTime = ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime();
                         start = System.nanoTime();
                         while(primes != 0)
                         {
                            if(isPrime(seed))
                            {
                                primes--;
                            }
                            seed++;

                        }
                         float cpuPercent = calcCPU(startCPUTime, start, cpuCount);
                         log("CPU USAGE : " + cpuPercent + " % ");


                         try
                         {
                             Thread.sleep(1000);
                         }
                         catch (InterruptedException e) {}
        }

            try
            {
                Thread.sleep(500);
            }`enter code here`
            catch (Exception ignored) { }
        }
    }

4

নিম্নলিখিত কোডটি কেবল লিনাক্স (সম্ভবত ইউনিক্স), তবে এটি একটি বাস্তব প্রকল্পে কাজ করে।

    private double getAverageValueByLinux() throws InterruptedException {
    try {

        long delay = 50;
        List<Double> listValues = new ArrayList<Double>();
        for (int i = 0; i < 100; i++) {
            long cput1 = getCpuT();
            Thread.sleep(delay);
            long cput2 = getCpuT();
            double cpuproc = (1000d * (cput2 - cput1)) / (double) delay;
            listValues.add(cpuproc);
        }
        listValues.remove(0);
        listValues.remove(listValues.size() - 1);
        double sum = 0.0;
        for (Double double1 : listValues) {
            sum += double1;
        }
        return sum / listValues.size();
    } catch (Exception e) {
        e.printStackTrace();
        return 0;
    }

}

private long getCpuT throws FileNotFoundException, IOException {
    BufferedReader reader = new BufferedReader(new FileReader("/proc/stat"));
    String line = reader.readLine();
    Pattern pattern = Pattern.compile("\\D+(\\d+)\\D+(\\d+)\\D+(\\d+)\\D+(\\d+)")
    Matcher m = pattern.matcher(line);

    long cpuUser = 0;
    long cpuSystem = 0;
    if (m.find()) {
        cpuUser = Long.parseLong(m.group(1));
        cpuSystem = Long.parseLong(m.group(3));
    }
    return cpuUser + cpuSystem;
}

1
এটি আসলে আমি যা খুজছিলাম, কিন্তু কোডটি / প্রো / স্ট্যাট থেকে সিপিইউ তথ্য সন্ধানের জন্য রেগেক্স প্যাটার্ন অনুপস্থিত
ডোনাল টোবিন

প্যাটার্ন কি ??
এইচক্রারস্কো

3

টাইপপ্রিফ-এসএস 1 "uk মুকিত \ প্রসেসর (_টোটাল) \ %% প্রসেসরের সময়" হিসাবে একটি ব্যাচের ফাইল তৈরি করুন "পিসি.বাট"

আপনি ক্লাস এমপিপ্রোসেস ব্যবহার করতে পারেন,

/ *
 * মো। মুকিত হাসান
 * সিএসই-জাবি, 35
 ** / জাভা আমদানি করুন io । *;

পাবলিক ক্লাস এমপিপ্রোসেসর {

public MProcessor() { String s; try { Process ps = Runtime.getRuntime().exec("Pc.bat"); BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream())); while((s = br.readLine()) != null) { System.out.println(s); } } catch( Exception ex ) { System.out.println(ex.toString()); } }

}

তারপরে কিছু স্ট্রিং ম্যানিপুলেশন পরে, আপনি সিপিইউ ব্যবহার পাবেন। আপনি অন্যান্য কাজের জন্য একই প্রক্রিয়াটি ব্যবহার করতে পারেন।

-মুকিত হাসান


1
আমার জন্য (উইন এক্সপি) উপযুক্ত কমান্ড লাইনটি ছিল: typeperf "\processor(_total)\% processor time"আপনি যদি এটি ব্যাচ ফাইলে রাখেন তবে% এর পরিবর্তে %% ব্যবহার করুন। আমি টেকনিক.মাইক্রোসফট /en-us/library/bb490960.aspx ব্যবহার করেছি
tutejszy
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.