1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 <2016> 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 <2016> 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: running multiple iocs on raspberry 2 |
From: | Ralph Lange <[email protected]> |
To: | EPICS Tech-Talk <[email protected]> |
Date: | Tue, 12 Jan 2016 15:16:53 +0100 |
I second that.An empty 3.15 IOC has ~15 threads, plus 2 for each CA client, plus 1 for each asyn port, plus 1 for each state set, plus a few for autoSaveRestore... Starting three IOCs on one machine, you will see a wealth of threads being thrown around between the available cores.
You might want to experiment with using the standard scheduler vs. using posix real-time scheduling. I have seen systems acting very different depending on that switch, especially when they are being loaded. In case you decide you need even more knobs to screw with the real-time behavior, the MCoreUtils module [1] offers ways to tune CPU affinity, priority, and scheduling policy of threads inside IOCs.
There is no problem in running multiple IOCs in parallel. However, in specific configurations clients will not be able to "see" all IOCs on one node. There is a slim and neat iptables trick that you can apply to that machine [2], which fixes the behavior requiring no changes on the client side.
Good luck! ~Ralph [1] http://epics.sourceforge.net/mcoreutils/[2] https://wiki-ext.aps.anl.gov/epics/index.php/How_to_Make_Channel_Access_Reach_Multiple_Soft_IOCs_on_a_Linux_Host
On 12/01/2016 14:08, Mark Rivers wrote:
Either way should work. If you run 3 devices in one IOC they will still use multiple threads/cores for some things, for example each asynSerialPort driver will run in its own thread. There is no problem to run multiple IOCs on the same computer either. Mark ________________________________________ From: [email protected] [[email protected]] on behalf of Christian Pauly [[email protected]] Sent: Tuesday, January 12, 2016 6:45 AM To: [email protected] Subject: running multiple iocs on raspberry 2 Hi I am setting up a measuerement setup consisting of three individual devices, which i would like to control with EPICS, running the IOC on a Raspberry Pi. Communication with each of the devices is done using altogether three USB-Serial converter, and based on StreamDevice. I already have working IOCs for each individual device. Now: If i would like to run the full setup simultaneously: Is it better to run the three IOCs individual on the Raspberry, one for each device ? And relying on Linux for the Multitasking ? Or is it preferable to run only a single IOC, and load the three database .dbd files into the same IOC, Initializing all three Serial ports in the same st.cmd startup file ??? The Raspberry2 has a quadcore CPU, so I could imagine, that running three individual IOCs might give better performance, since three cores are used ? But isn't there a problem to run more than one IOC in parallel ? Any advice welcome ! Best regards. Christian