X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b22adadfea7ebc1441083b43c6e287cdf1eaa79a..ea74f5d95928a521a588737e81f1de94eef25d19:/src/bindings/java/org/simgrid/msg/Host.java diff --git a/src/bindings/java/org/simgrid/msg/Host.java b/src/bindings/java/org/simgrid/msg/Host.java index 4da5e01347..866d537ada 100644 --- a/src/bindings/java/org/simgrid/msg/Host.java +++ b/src/bindings/java/org/simgrid/msg/Host.java @@ -1,35 +1,32 @@ /* Bindings to the MSG hosts */ -/* Copyright (c) 2006-2014. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2006-2022. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ package org.simgrid.msg; -import org.simgrid.msg.Storage; - /** - * A host object represents a location (any possible place) where a process may run. - * Thus it is represented as a physical resource with computing capabilities, some - * mailboxes to enable running process to communicate with remote ones, and some private - * data that can be only accessed by local process. An instance of this class is always + * A host object represents a location (any possible place) where a process may run. + * Thus it is represented as a physical resource with computing capabilities, some + * mailboxes to enable running process to communicate with remote ones, and some private + * data that can be only accessed by local process. An instance of this class is always * bound with the corresponding native host. All the native hosts are automatically created * during the call of the method Msg.createEnvironment(). This method take as parameter a * platform file which describes all elements of the platform (host, link, root..). * You cannot create a host yourself. * - * The best way to get an host instance is to call the static method + * The best way to get a host instance is to call the static method * Host.getByName(). * * For example to get the instance of the host. If your platform - * file description contains an host named "Jacquelin" : + * file description contains a host named "Jacquelin" : * * \verbatim Host jacquelin; -try { +try { jacquelin = Host.getByName("Jacquelin"); } catch(HostNotFoundException e) { System.err.println(e.toString()); @@ -37,21 +34,21 @@ try { ... \endverbatim * - */ + */ public class Host { /** * This attribute represents a bind between a java host object and * a native host. Even if this attribute is public you must never - * access to it. It is set automatically during the call of the + * access to it. It is set automatically during the call of the * static method Host.getByName(). * * @see Host.getByName(). - */ + */ private long bind; protected String name; - /** User data. */ + /** User data. */ private Object data; protected Host() { this.bind = 0; @@ -60,36 +57,35 @@ public class Host { @Override public String toString (){ - return this.name; + return this.name; } /** - * This static method gets an host instance associated with a native + * This static method gets a host instance associated with a native * host of your platform. This is the best way to get a java host object. * * @param name The name of the host to get. * * @return The host object with the given name. * @exception HostNotFoundException if the name of the host is not valid. - * NativeException if the native version of this method failed. - */ - public static native Host getByName(String name) throws HostNotFoundException, NullPointerException; - /** Counts the installed hosts. */ + */ + public static native Host getByName(String name) throws HostNotFoundException; + /** Counts the installed hosts. */ public static native int getCount(); - /** Returns the host of the current process. */ + /** Returns the host of the current process. */ public static native Host currentHost(); - /** Returns all hosts of the installed platform. */ + /** Returns all hosts of the installed platform. */ public static native Host[] all(); - /** + /** * This static method sets a mailbox to receive in asynchronous mode. - * - * All messages sent to this mailbox will be transferred to - * the receiver without waiting for the receive call. + * + * All messages sent to this mailbox will be transferred to + * the receiver without waiting for the receive call. * The receive call will still be necessary to use the received data. - * If there is a need to receive some messages asynchronously, and some not, + * If there is a need to receive some messages asynchronously, and some not, * two different mailboxes should be used. * * @param mailboxName The name of the mailbox @@ -102,7 +98,7 @@ public class Host { public void setData(Object data) { this.data = data; - } + } public Object getData() { return this.data; @@ -112,45 +108,61 @@ public class Host { return null != this.data; } - /** Starts the host if it is off */ + /** Starts the host if it is off */ public native void on(); - /** Stops the host if it is on */ - public native void off(); + /** Stops the host if it is on */ + public native void off() throws ProcessKilledError; /** * This method returns the speed of the processor of a host (in flops), * regardless of the current load of the machine. - */ + */ public native double getSpeed(); public native double getCoreNumber(); public native String getProperty(String name); public native void setProperty(String name, String value); - /** Tests if an host is up and running. */ + /** Tests if a host is up and running. */ public native boolean isOn(); - /** Returns the list of mount point names on an host */ - public native Storage[] getMountedStorage(); - /** This methods returns the list of storages (names) attached to an host */ - public native String[] getAttachedStorage(); - - /** Returns the amount of Joules consumed by that host so far */ + /** After this call, sg_host_get_consumed_energy() will not interrupt your process + * (until after the next clock update). + */ + public static native void updateAllEnergyConsumptions(); + /** Returns the amount of Joules consumed by that host so far + * + * Please note that since the consumption is lazily updated, it may require a simcall to update it. + * The result is that the actor requesting this value will be interrupted, + * the value will be updated in kernel mode before returning the control to the requesting actor. + */ public native double getConsumedEnergy(); - + + /** Returns the current load of the host, as a ratio = achieved_flops / (core_current_speed * core_amount) + * + * See simgrid::plugin::HostLoad::get_current_load() for the full documentation. + */ + public native double getCurrentLoad(); + /** Returns the number of flops computed of the host since the beginning of the simulation */ + public native double getComputedFlops(); + /** Returns the average load of the host as a ratio since the beginning of the simulation*/ + public native double getAvgLoad(); + /** Returns the current pstate */ public native int getPstate(); /** Changes the current pstate */ public native void setPstate(int pstate); public native int getPstatesCount(); - /** Returns the speed of the processor (in flop/s) at the current pstate. See also @ref SURF_plugin_energy. */ + /** Returns the speed of the processor (in flop/s) at the current pstate. See also @ref plugin_energy. */ public native double getCurrentPowerPeak(); - /** Returns the speed of the processor (in flop/s) at a given pstate. See also @ref SURF_plugin_energy. */ + /** Returns the speed of the processor (in flop/s) at a given pstate. See also @ref plugin_energy. */ public native double getPowerPeakAt(int pstate); - + + /** Returns the current computation load (in flops per second) */ + public native double getLoad(); /** Class initializer, to initialize various JNI stuff */ - public static native void nativeInit(); + private static native void nativeInit(); static { nativeInit(); - } -} + } +}