X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1e256b9b45e67cc52372e15811049ab32fecb1d2..84402e8e2ee2a2d0bef25fdceb0a263ed8b471f6:/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 bf2b589774..b4aae07481 100644 --- a/src/bindings/java/org/simgrid/msg/Host.java +++ b/src/bindings/java/org/simgrid/msg/Host.java @@ -1,26 +1,23 @@ /* Bindings to the MSG hosts */ -/* Copyright (c) 2006-2014. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2006-2020. 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 an host instance is to call the static method * Host.getByName(). * * For example to get the instance of the host. If your platform @@ -29,7 +26,7 @@ import org.simgrid.msg.Storage; * \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,7 +57,7 @@ public class Host { @Override public String toString (){ - return this.name; + return this.name; } /** @@ -71,24 +68,24 @@ public class Host { * * @return The host object with the given name. * @exception HostNotFoundException if the name of the host is not valid. - */ + */ public static native Host getByName(String name) throws HostNotFoundException; - /** Counts the installed hosts. */ + /** 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 @@ -101,7 +98,7 @@ public class Host { public void setData(Object data) { this.data = data; - } + } public Object getData() { return this.data; @@ -111,15 +108,15 @@ 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(); @@ -133,23 +130,44 @@ public class Host { /** 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(); } -} +}