ICE is configured through a proper section in the WMS conf file (/opt/glite/etc/glite_wms.conf), as in the following example:

ICE = [
     listener_port = 7010;
     Input = "${GLITE_LOCATION_VAR}/ice/ice_fl";
     logfile = "${GLITE_LOCATION_LOG}/ice.log";
     start_poller = true;
     poller_purges_jobs = true;
     start_listener = true;
     start_subscription_updater = true;
     start_job_killer = true;
     job_cancellation_threshold_time = 300;
     subscription_update_threshold_time = 1200;
     subscription_duration = 86400;
     poller_delay = 60;
     poller_status_threshold_time = 60;
     cream_url_prefix = "https://";
     cream_url_postfix = "/ce-cream/services/CREAM";
     creamdelegation_url_prefix = "https://";
     creamdelegation_url_postfix = "/ce-cream/services/CREAMDelegation";
     cemon_url_prefix = "https://";
     cemon_url_postfix = "/ce-monitor/services/CEMonitor";
     ice_topic = "CREAM_JOBS";
     lease_delta_time = 60;
     notification_frequency = 60;
     ice_log_level = 400;
     listener_enable_authn = true;
     listener_enable_authz = true;
     start_lease_updater = true;
     start_proxy_renewer = true;
     ice_host_cert = $GLITE_HOST_CERT;
     ice_host_key = $GLITE_HOST_KEY;
     max_logfile_size = 500*1024;
     max_logfile_rotations = 10;
     max_ice_threads = 10;
     persist_dir = "${GLITE_LOCATION_VAR}/ice/ice_db";
     ice_empty_threshold = 600;
     ice_max_mem = 524288;
The following configuration parameters are recognized:
(default true) If true, ICE log messages appear on the logfile specified by the logfile attribute;
(default true) If true, ICE log messages appear on the console;
(default 9000) The port where ICE listens for CEMon notifications about job status changes;
(default ${EDG_WL_TMP}/workload_manager/Output.fl) The filelist where ICE gets the commands to execute (mostly submit/cancel of jobs);
(default ${GLITE_LOCATION_LOG}/ice.log) The file where ICE log messages are saved. Note that the log file is used only if log_on_file is set to true; note that if this file already exists the new log is appended to it
(default true) if true, starts the poller component. The poller is the module responsible for periodically polling the cream CEs in order to refresh job status information. Starting the poller is useful, as ICE might - at least in theory - miss CEmon notifications; setting this parameter to false is conceived only for debug purpose (performed by the developers)
(default true) if true ICE will purge the terminated jobs (which means jobs in status ABORTED, DONE-OK, DONE-FAILED, CANCELLED)
(default true) if true, starts the listener component which accepts CEmon notifications about job status changes;
(default true) If ''true', starts the CEMon subscription updater; when using listener (start_listener=true) it is reccomended to set this parameter to true
(default true) if true start the thread the cancel running jobs whose proxy is going to expire
(default 300) When a proxy certificate will expire in this time the job killer will cancel the job
(default 86400) The duration (in seconds) of a subscription
(default 1200) The minimal residual duration of subscription which causes subscriptions to be renewed
(default 60) The delay (in seconds) between requests made by the ICE poller
(default https://) The string prepended to CREAM endpoints
(default /ce-cream/services/CREAM) The string appended to CREAM endpoints
(default https://) The string prepended to CREAM delegation endpoints
(default /ce-cream/services/CREAMDelegation) The string appended to CREAM delegation endpoints
(default https://) The string prepended to CEmon endpoints
(default /ce-monitor/services/CEMonitor) The string appended to CEmon endpoints
(default CREAM_JOBS) The CEmon topic which ICE should subscribe to
(default 60) ICE is able to explicitly poll the CREAM server for job status changes in the event that no CEMon status change notifications for some jobs are received. There are currently two parameters which can be used to tune this behaviour: one is poller_status_threshold_time, and the second one is the value of the environment variable ICE_EMPTY_THRESHOLD (default: 10 minutes). Both variables contain values in seconds. CEMon periodically sends "empty", keep-alive notifications to ICE so that ICE knows that CEMon is working correctly. For each job, ICE keeps two timestamps, which we call t_last_notification and t_last_empty_notification. The first one contains the timestamp of the last nonempty status change notification, or the last explicit poll for the status of that job. The t_last_empty_notification contains the timestamp of the last keep-alive notification which has been received. A keep-alive notification updates the t_last_empty_notification timestamp for all jobs associated to the CEMon Subscription ID associated to the notification. A job is polled if the following condition holds: ( ( t_now - t_last_notification ) >= poller_status_threshold_time ) OR ( t_now - t_last_empty_notification ) >= empty_threshold ) (the empty_threshold configuration parameter is described later).
(default 400) The verbosity level for log messages. Increasing verbosity levels are 0 (FATAL), 100 (ALERT), 200 (CRITICAL), 300 (ERROR), 400 (WARN), 500 (NOTICE), 600 (INFO), 700 (DEBUG). Setting the loglevel to N means that all messages at levels less than or equal to N are displayed on the console and/or logfile
(default 3600) The time duration (in seconds) the lease is renewed.
(default 1800) The delay between two subsequent lease update remote call to CREAM (for all jobs)
(default 60) The frequency (in seconds) at which CEMon notifications are received
(default true) If true the listener accepts only authenticated connections/notifications by CEMon about job status changes
(default true) if true the listener will notification only from CEMon ICE is subscribed to; if false, all notification (from whatever) will be accepted/processed.
(default true) Modify this parameter only for debug purpose (it is conceived basically for developer); the lease updater is an important thread of ICE that periodically informs CREAM that ICE is interested to a certain job; if a lease expires CREAM will cancel the related job
(default true) Modify this parameter only for debug purpose (it is conceived basically for developer); the proxy renewer thread periodically checks for proxy refresh and re-delegates the new proxy
(default ${GLITE_HOST_KEY}) the key used (together the ice_host_cert) by the listener to require the CEMon authentication for any status notification
(default ${GLITE_HOST_CERT}) the key used (together the ice_host_key) by the listener to require the CEMon authentication for any status notification
(default 500*1024) the maximum size of ICE log file, in bytes. When the log file exceeds this limit, it is automatically rotated (see also max_logfile_rotations)
(default 10) the maximum number of times the logfile is rotated. After that limit, old logs are discarded
(default 10) ICE is able to send multiple commands (job submissions/cancellations) to CREAM at the same time, using multiple concurrent threads. This parameter lets the user configure the maximum number of threads, hence the maximum number of concurrent commands which are issued.
(default ${GLITE_LOCATION_VAR}/ice/ice_db) the directory used by ICE to store persistent informations, such as the job cache (which has to be preserved across ICE failures).
(default 600) The delay in seconds between two subsequent proxy renewal remote call to CREAM

The paths used in persist_dir, logfile and Input are automatically created by ICE if they do not already exist. If ICE is unable to create the path(s), for example because it has no permission on the appropriate filesystem, an error message is displaied on the console and ICE immediately stops.

(default 100) The maximum number of jobs that are contemporary sent to CREAM for a remote operation (like Status Poll, Lease Update, Job cancel etc.)
(default 600) The maximum allowed elapsed time (in seconds) since the last empty status change notification before ICE polls a job. ICE subscribes to CEMon in order to get notifications about job status changes. An "empty" status change notification is a CEMon notification which refers to all jobs belonging to a given user X, such that ICE received an actual ("normal") status change notification for a job Y of user X.
(default 524288) When ICE uses more RSS memory than the amount specified in ice_max_mem (in Kbytes), it is killed and restarted .