All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.commons.util.ProcessorInfo Maven / Gradle / Ivy

There is a newer version: 15.1.0.Dev04
Show newest version
package org.infinispan.commons.util;

import java.security.AccessController;
import java.security.PrivilegedAction;

/**
 * Provides general information about the processors on this host.
 *
 * @author Tristan Tarrant
 */
public class ProcessorInfo {

   private ProcessorInfo() {
   }

   /**
    * Returns the number of processors available to this process. On most operating systems this method
    * simply delegates to {@link Runtime#availableProcessors()}. However, before Java 10, under Linux this strategy
    * is insufficient, since the JVM does not take into consideration the process' CPU set affinity and the CGroups
    * quota/period assignment. Therefore this method will analyze the Linux proc filesystem
    * to make the determination. Since the CPU affinity of a process can be change at any time, this method does
    * not cache the result. Calls should be limited accordingly.
    * 
* The number of available processors can be overridden via the system property infinispan.activeprocessorcount, * e.g. java -Dinfinispan.activeprocessorcount=4 .... Note that this value cannot exceed the actual number * of available processors. *
* Since Java 10, this can also be achieved via the VM flag -XX:ActiveProcessorCount=xx. *
* Note that on Linux, both SMT units (Hyper-Threading) and CPU cores are counted as a processor. * * @return the available processors on this system. */ public static int availableProcessors() { if (System.getSecurityManager() != null) { return AccessController.doPrivileged((PrivilegedAction) () -> org.infinispan.commons.jdkspecific.ProcessorInfo.availableProcessors()); } return org.infinispan.commons.jdkspecific.ProcessorInfo.availableProcessors(); } public static void main(String args[]) { System.out.println(availableProcessors()); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy