Re: Broken Pipe when agents report to console
Darren Ball <[email protected]> Tue, 1 Nov 2016 19:18:28 -0400
| Newsgroups | gmane.comp.java.grinder.user |
|---|---|
| Message-ID | <CA+YPNhecPirkPTm8V9RNuTxafRm71ke78Z_E-qqk0G+2wBmuxA@mail.gmail.com> |
--===============0011909625338660651== Content-Type: multipart/alternative; boundary=001a114ac51acd197f0540458abe --001a114ac51acd197f0540458abe Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Adding a keep alive means you never have to fiddle with the timeout. IMO. On Nov 1, 2016 3:56 PM, "olivier merlin" <[email protected]> wrote: Hello, We have got the Broken pipe at startup because we have a lot of data to initialized. The console close the connections after 30 second if there is no activity coming from the worker only before the first run. We have so recompiled the code replacing the default value of 30 seconds by 5 minutes. If you have the problem sometimes at startup you have this issue. Cheers Olivier Le mar. 1 nov. 2016 20:26, Joel Lucuik <[email protected]> a =C3=A9crit= : > Thanks Darren. > > I am about to try > > 1. Adding connector and address to SocketWrapper, and adding another > constructor to set them. > 2. Adding method SocketWrapper reconnectToSocket() > 3. Calling from ClientSender.blockingSend() > > Thinking about using this pattern in other places too. > > That said, I think your idea sounds like it's worth a try, especially > considering it's already worked for you. And I am not even sure > which methods to change!! Just kind of looking and hoping, and will do > some logging to hopefully reproduce it. > > Joel > > > > On Tue, Nov 1, 2016 at 3:11 PM, Darren Ball <[email protected]> wrote= : > > Hi Joel, > > I've had a lot of issues with client sender timing out. > > Here is an approach (patch below) that I've taken. Adding a keepAlive to > sender as it is created in GrinderProcess > > Not sure if it will help, but it did for me in my case. I did this as it > was timing out way to early in my process and I was getting 'whilst' > communicating with console errors. > > Patch:: > > Index: grinder-core/src/main/java/net/grinder/engine/process/GrinderProce= ss.java > IDEA additional info: > Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP > <+>UTF-8 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- grinder-core/src/main/java/net/grinder/engine/process/GrinderProcess.= java (revision ffb7bca73ea3190eaab12d1eccf73bf31464b58f) > +++ grinder-core/src/main/java/net/grinder/engine/process/GrinderProcess.= java (revision ) > @@ -95,6 +95,9 @@ > import java.util.Map; > import java.util.Timer; > import java.util.TimerTask; > +import java.util.concurrent.Executors; > +import java.util.concurrent.ScheduledExecutorService; > +import java.util.concurrent.TimeUnit; > > > /** > @@ -141,6 +144,10 @@ > // Guarded by m_eventSynchronisation. > private String m_shutdownReason; > > + private ClientSender sender; > + > + private final ScheduledExecutorService m_executor =3D Executors.newSin= gleThreadScheduledExecutor(); > + > /** > * Creates a new {@code GrinderProcess} instance. > * > @@ -184,13 +191,34 @@ > > final BarrierGroups barrierGroups; > > + sender =3D ClientSender.connect( > + new ConnectorFactory(ConnectionType.WORKER).create(propertie= s), > + new WorkerAddress(workerIdentity)); > + > + final Runnable keepAlive =3D new Runnable() { > + @Override > + public void run() { > + try { > + sender.sendKeepAlive(); > + } > + catch (CommunicationException e) { > + // Connection is dead, terminate task. > + throw new RuntimeException(e); > + } > + } > + }; > + > + m_executor.scheduleWithFixedDelay(keepAlive, > + 0, > + 1, > + TimeUnit.SECONDS); > + > + > if (m_initialisationMessage.getReportToConsole()) { > m_consoleSender =3D > new FirstHurdleSender( > - new QueuedSenderDecorator( > - ClientSender.connect( > - new ConnectorFactory(ConnectionType.WORKER).create(propert= ies), > - new WorkerAddress(workerIdentity)))); > + new QueuedSenderDecorator(sender > + )); > > barrierGroups =3D > new ClientBarrierGroups(m_consoleSender, > > > On Tue, Nov 1, 2016 at 1:33 PM, Joel Lucuik <[email protected]> wrote= : > > Hi, > > Grinder version is 3-11. > 4 vms, each VM has an agent, and the console shares a VM with the first > agent. 10,0000 users (threads). > > Problem: We are occasionally seeing broken pipes when the agent(s) report > anything to the console. > > My Investigation: > > I have been looking at the Grinder source. There is some code which traps > CommunicationException such as > > AbstractSender.send() or > ClientSender.blockingSend() > > but doesn't do anything with it. Such as attempt a reconnect if it's a > Broken Pipe. > > Has this been fixed in newer versions? More specifically if the agent > tries to send stats to the console, or a status update, and encounters a > broken pipe, can it reconnect? > > Suggestions on which code/class/method to fix? > > > We have very good unix people on our team. They have already upped the OS > files, so we are (fairly) sure this is not the issue. > > Right now we are debating on a port to JMeter. > > Any advice would be appreciated. > > Joel > > > > ------------------------------------------------------------ > ------------------ > Developer Access Program for Intel Xeon Phi Processors > Access to Intel Xeon Phi processor-based developer platforms. > With one year of Intel Parallel Studio XE. > Training and support from Colfax. > Order your platform today. http://sdm.link/xeonphi > _______________________________________________ > grinder-use mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/grinder-use > > > > ------------------------------------------------------------ > ------------------ > Developer Access Program for Intel Xeon Phi Processors > Access to Intel Xeon Phi processor-based developer platforms. > With one year of Intel Parallel Studio XE. > Training and support from Colfax. > Order your platform today. http://sdm.link/xeonphi > _______________________________________________ > grinder-use mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/grinder-use > > > ------------------------------------------------------------ > ------------------ > Developer Access Program for Intel Xeon Phi Processors > Access to Intel Xeon Phi processor-based developer platforms. > With one year of Intel Parallel Studio XE. > Training and support from Colfax. > Order your platform today. http://sdm.link/xeonphi_______ > ________________________________________ > grinder-use mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/grinder-use > ------------------------------------------------------------ ------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ grinder-use mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/grinder-use --001a114ac51acd197f0540458abe Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <p dir=3D"ltr">Adding a keep alive means you never have to fiddle with the = timeout.=C2=A0 IMO.</p> <div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On Nov 1, 2016 3:= 56 PM, "olivier merlin" <<a href=3D"mailto:[email protected]= ">[email protected]</a>> wrote:<br type=3D"attribution"><blockquote cl= ass=3D"quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding= -left:1ex"><p dir=3D"ltr">Hello,<br> We have got the Broken pipe at startup because we have a lot of data to ini= tialized.<br> The console close the connections after 30 second if there is no activity c= oming from the worker only before the first run. We have so recompiled the = code replacing the default=C2=A0 value of 30 seconds by 5 minutes.<br> If you have the problem sometimes at startup you have this issue.<br> Cheers<font color=3D"#888888"><br> Olivier<br> </font></p><div class=3D"elided-text"> <br><div class=3D"gmail_quote"><div dir=3D"ltr">Le mar. 1 nov. 2016 20:26, = Joel Lucuik <<a href=3D"mailto:[email protected]" target=3D"_blank">= [email protected]</a>> a =C3=A9crit=C2=A0:<br></div><blockquote clas= s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad= ding-left:1ex"><div dir=3D"ltr" class=3D"m_-6339599825489503231gmail_msg"><= div class=3D"m_-6339599825489503231gmail_msg"><div class=3D"m_-633959982548= 9503231gmail_msg"><div class=3D"m_-6339599825489503231gmail_msg"><div class= =3D"m_-6339599825489503231gmail_msg"><div class=3D"m_-6339599825489503231gm= ail_msg"><div class=3D"m_-6339599825489503231gmail_msg"><div class=3D"m_-63= 39599825489503231gmail_msg">Thanks Darren.<br class=3D"m_-63395998254895032= 31gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"></div>I am about= to try <br class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-63395= 99825489503231gmail_msg"></div>1. Adding connector and address to SocketWra= pper, and adding another constructor to set them.<br class=3D"m_-6339599825= 489503231gmail_msg"></div>2. Adding method SocketWrapper reconnectToSocket(= )<br class=3D"m_-6339599825489503231gmail_msg"></div>3. Calling from Client= Sender.blockingSend()<br class=3D"m_-6339599825489503231gmail_msg"><br clas= s=3D"m_-6339599825489503231gmail_msg"></div>Thinking about using this patte= rn in other places too.<br class=3D"m_-6339599825489503231gmail_msg"><br cl= ass=3D"m_-6339599825489503231gmail_msg"></div>That said, I think your idea = sounds like it's worth a try, especially considering it's already w= orked for you. And I am not even sure<br class=3D"m_-6339599825489503231gma= il_msg"></div><div class=3D"m_-6339599825489503231gmail_msg">which methods = to change!! Just kind of looking and hoping, and will do some logging to ho= pefully reproduce it.<br class=3D"m_-6339599825489503231gmail_msg"></div></= div><div dir=3D"ltr" class=3D"m_-6339599825489503231gmail_msg"><div class= =3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gma= il_msg"></div>Joel<br class=3D"m_-6339599825489503231gmail_msg"><div class= =3D"m_-6339599825489503231gmail_msg"><div class=3D"m_-6339599825489503231gm= ail_msg"><div class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-633= 9599825489503231gmail_msg"><div class=3D"m_-6339599825489503231gmail_msg"><= div class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-6339599825489= 503231gmail_msg"></div></div></div></div></div></div><div class=3D"gmail_ex= tra m_-6339599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gma= il_msg"><div class=3D"gmail_quote m_-6339599825489503231gmail_msg">On Tue, = Nov 1, 2016 at 3:11 PM, Darren Ball <span dir=3D"ltr" class=3D"m_-633959982= 5489503231gmail_msg"><<a href=3D"mailto:[email protected]" class=3D"= m_-6339599825489503231gmail_msg" target=3D"_blank">[email protected]</a= >></span> wrote:<br class=3D"m_-6339599825489503231gmail_msg"><blockquot= e class=3D"gmail_quote m_-6339599825489503231gmail_msg" style=3D"margin:0 0= 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr" class= =3D"m_-6339599825489503231gmail_msg">Hi Joel,<div class=3D"m_-6339599825489= 503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"></div><div c= lass=3D"m_-6339599825489503231gmail_msg">I've had a lot of issues with = client sender timing out.</div><div class=3D"m_-6339599825489503231gmail_ms= g"><br class=3D"m_-6339599825489503231gmail_msg"></div><div class=3D"m_-633= 9599825489503231gmail_msg">Here is an approach (patch below) that I've = taken.=C2=A0 Adding a keepAlive to sender as it is created in GrinderProces= s</div><div class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-63395= 99825489503231gmail_msg"></div><div class=3D"m_-6339599825489503231gmail_ms= g">Not sure if it will help, but it did for me in my case.=C2=A0 I did this= as it was timing out way to early in my process and I was getting 'whi= lst' communicating with console errors.</div><div class=3D"m_-633959982= 5489503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"></div><d= iv class=3D"m_-6339599825489503231gmail_msg">Patch::</div><div class=3D"m_-= 6339599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"= ></div><div class=3D"m_-6339599825489503231gmail_msg"><pre style=3D"color:r= gb(0,0,0);font-family:menlo;font-size:9pt" class=3D"m_-6339599825489503231g= mail_msg">Index: grinder-core/src/main/java/<wbr>net/grinder/engine/process= /<wbr>GrinderProcess.java<br class=3D"m_-6339599825489503231gmail_msg">IDEA= additional info:<br class=3D"m_-6339599825489503231gmail_msg">Subsystem: c= om.intellij.openapi.diff.<wbr>impl.patch.CharsetEP<br class=3D"m_-633959982= 5489503231gmail_msg"><+>UTF-8<br class=3D"m_-6339599825489503231gmail= _msg">=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<wbr>=3D=3D=3D=3D=3D=3D=3D<br cla= ss=3D"m_-6339599825489503231gmail_msg">--- grinder-core/src/main/java/<wbr>= net/grinder/engine/process/<wbr>GrinderProcess.java (revision ffb7bca73ea3= 190eaab12d1eccf73b<wbr>f31464b58f)<br class=3D"m_-6339599825489503231gmail_= msg">+++ grinder-core/src/main/java/<wbr>net/grinder/engine/process/<wbr>Gr= inderProcess.java (revision )<br class=3D"m_-6339599825489503231gmail_msg"= >@@ -95,6 +95,9 @@<br class=3D"m_-6339599825489503231gmail_msg"> import jav= a.util.Map;<br class=3D"m_-6339599825489503231gmail_msg"> import java.util.= Timer;<br class=3D"m_-6339599825489503231gmail_msg"> import java.util.Timer= Task;<br class=3D"m_-6339599825489503231gmail_msg">+import java.util.concur= rent.<wbr>Executors;<br class=3D"m_-6339599825489503231gmail_msg">+import j= ava.util.concurrent.<wbr>ScheduledExecutorService;<br class=3D"m_-633959982= 5489503231gmail_msg">+import java.util.concurrent.TimeUnit;<br class=3D"m_-= 6339599825489503231gmail_msg"> <br class=3D"m_-6339599825489503231gmail_msg= "> <br class=3D"m_-6339599825489503231gmail_msg"> /**<br class=3D"m_-633959= 9825489503231gmail_msg">@@ -141,6 +144,10 @@<br class=3D"m_-633959982548950= 3231gmail_msg"> // Guarded by m_eventSynchronisation.<br class=3D"m_-6339= 599825489503231gmail_msg"> private String m_shutdownReason;<br class=3D"m= _-6339599825489503231gmail_msg"> <br class=3D"m_-6339599825489503231gmail_m= sg">+ private ClientSender sender;<br class=3D"m_-6339599825489503231gmai= l_msg">+<br class=3D"m_-6339599825489503231gmail_msg">+ private final Sche= duledExecutorService m_executor =3D Executors.<wbr>newSingleThreadScheduled= Execut<wbr>or();<br class=3D"m_-6339599825489503231gmail_msg">+<br class=3D= "m_-6339599825489503231gmail_msg"> /**<br class=3D"m_-6339599825489503231= gmail_msg"> * Creates a new {@code GrinderProcess} instance.<br class=3D= "m_-6339599825489503231gmail_msg"> *<br class=3D"m_-6339599825489503231g= mail_msg">@@ -184,13 +191,34 @@<br class=3D"m_-6339599825489503231gmail_msg= "> <br class=3D"m_-6339599825489503231gmail_msg"> final BarrierGroups b= arrierGroups;<br class=3D"m_-6339599825489503231gmail_msg"> <br class=3D"m_= -6339599825489503231gmail_msg">+ sender =3D ClientSender.connect(<br cla= ss=3D"m_-6339599825489503231gmail_msg">+ new ConnectorFactory(<w= br>ConnectionType.WORKER).create(<wbr>properties),<br class=3D"m_-633959982= 5489503231gmail_msg">+ new WorkerAddress(workerIdentity))<wbr>;<= br class=3D"m_-6339599825489503231gmail_msg">+<br class=3D"m_-6339599825489= 503231gmail_msg">+ final Runnable keepAlive =3D new Runnable() {<br clas= s=3D"m_-6339599825489503231gmail_msg">+ @Override<br class=3D"m_-63395= 99825489503231gmail_msg">+ public void run() {<br class=3D"m_-63395998= 25489503231gmail_msg">+ try {<br class=3D"m_-6339599825489503231gmai= l_msg">+ sender.sendKeepAlive();<br class=3D"m_-633959982548950323= 1gmail_msg">+ }<br class=3D"m_-6339599825489503231gmail_msg">+ = catch (CommunicationException e) {<br class=3D"m_-6339599825489503231gmai= l_msg">+ // Connection is dead, terminate task.<br class=3D"m_-633= 9599825489503231gmail_msg">+ throw new RuntimeException(e);<br cla= ss=3D"m_-6339599825489503231gmail_msg">+ }<br class=3D"m_-6339599825= 489503231gmail_msg">+ }<br class=3D"m_-6339599825489503231gmail_msg">+= };<br class=3D"m_-6339599825489503231gmail_msg">+<br class=3D"m_-633959= 9825489503231gmail_msg">+ m_executor.<wbr>scheduleWithFixedDelay(<wbr>ke= epAlive,<br class=3D"m_-6339599825489503231gmail_msg">+ 0,<br cl= ass=3D"m_-6339599825489503231gmail_msg">+ 1,<br class=3D"m_-6339= 599825489503231gmail_msg">+ TimeUnit.SECONDS);<br class=3D"m_-63= 39599825489503231gmail_msg">+<br class=3D"m_-6339599825489503231gmail_msg">= +<br class=3D"m_-6339599825489503231gmail_msg"> if (m_initialisationMes= sage.<wbr>getReportToConsole()) {<br class=3D"m_-6339599825489503231gmail_m= sg"> m_consoleSender =3D<br class=3D"m_-6339599825489503231gmail_msg"= > new FirstHurdleSender(<br class=3D"m_-6339599825489503231gmail_ms= g">- new QueuedSenderDecorator(<br class=3D"m_-6339599825489503231= gmail_msg">- ClientSender.connect(<br class=3D"m_-63395998254895= 03231gmail_msg">- new ConnectorFactory(<wbr>ConnectionType.WOR= KER).create(<wbr>properties),<br class=3D"m_-6339599825489503231gmail_msg">= - new WorkerAddress(workerIdentity))<wbr>));<br class=3D"m_-63= 39599825489503231gmail_msg">+ new QueuedSenderDecorator(sender<br = class=3D"m_-6339599825489503231gmail_msg">+ ));<br class=3D"m_-633= 9599825489503231gmail_msg"> <br class=3D"m_-6339599825489503231gmail_msg"> = barrierGroups =3D<br class=3D"m_-6339599825489503231gmail_msg"> = new ClientBarrierGroups(m_<wbr>consoleSender,<br class=3D"m_-63395998254= 89503231gmail_msg"></pre></div><div class=3D"gmail_extra m_-633959982548950= 3231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"><div class=3D"= gmail_quote m_-6339599825489503231gmail_msg">On Tue, Nov 1, 2016 at 1:33 PM= , Joel Lucuik <span dir=3D"ltr" class=3D"m_-6339599825489503231gmail_msg">&= lt;<a href=3D"mailto:[email protected]" class=3D"m_-6339599825489503231= gmail_msg" target=3D"_blank">[email protected]</a>></span> wrote:<br= class=3D"m_-6339599825489503231gmail_msg"><blockquote class=3D"gmail_quote= m_-6339599825489503231gmail_msg" style=3D"margin:0 0 0 .8ex;border-left:1p= x #ccc solid;padding-left:1ex"><div dir=3D"ltr" class=3D"m_-633959982548950= 3231gmail_msg"><div class=3D"m_-6339599825489503231gmail_msg"><div class=3D= "m_-6339599825489503231gmail_msg"><div class=3D"m_-6339599825489503231gmail= _msg"><div class=3D"m_-6339599825489503231gmail_msg">Hi,<br class=3D"m_-633= 9599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg">Gr= inder version is 3-11.<br class=3D"m_-6339599825489503231gmail_msg">4 vms, = each VM has an agent, and the console shares a VM with the first agent. 10,= 0000 users (threads). <br class=3D"m_-6339599825489503231gmail_msg"><br cla= ss=3D"m_-6339599825489503231gmail_msg"></div>Problem: We are occasionally s= eeing broken pipes when the agent(s) report anything to the console. <br cl= ass=3D"m_-6339599825489503231gmail_msg"></div></div><div class=3D"m_-633959= 9825489503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg">My In= vestigation:<br class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-6= 339599825489503231gmail_msg">I have been looking at the Grinder source. The= re is some code which traps CommunicationException such as <br class=3D"m_-= 6339599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"= >AbstractSender.send() or <br class=3D"m_-6339599825489503231gmail_msg">Cli= entSender.blockingSend()<br class=3D"m_-6339599825489503231gmail_msg"><br c= lass=3D"m_-6339599825489503231gmail_msg">but doesn't do anything with i= t. Such as attempt a reconnect if it's a Broken Pipe.<br class=3D"m_-63= 39599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"><= /div><div class=3D"m_-6339599825489503231gmail_msg">Has this been fixed in = newer versions? More specifically if the agent tries to send stats to the c= onsole, or a status update, and encounters a broken pipe, can it reconnect?= <br class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-6339599825489= 503231gmail_msg"></div><div class=3D"m_-6339599825489503231gmail_msg">Sugge= stions on which code/class/method to fix?<br class=3D"m_-633959982548950323= 1gmail_msg"><br class=3D"m_-6339599825489503231gmail_msg"></div><div class= =3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-6339599825489503231gma= il_msg"></div><div class=3D"m_-6339599825489503231gmail_msg">We have very g= ood unix people on our team. They have already upped the OS files, so we ar= e (fairly) sure this is not the issue.<br class=3D"m_-6339599825489503231gm= ail_msg"><br class=3D"m_-6339599825489503231gmail_msg"></div><div class=3D"= m_-6339599825489503231gmail_msg">Right now we are debating on a port to JMe= ter.<br class=3D"m_-6339599825489503231gmail_msg"><br class=3D"m_-633959982= 5489503231gmail_msg"></div><div class=3D"m_-6339599825489503231gmail_msg">A= ny advice would be appreciated.<span class=3D"m_-6339599825489503231m_11401= 34821490960840m_-1466682822665794981HOEnZb m_-6339599825489503231gmail_msg"= ><font color=3D"#888888" class=3D"m_-6339599825489503231gmail_msg"><br clas= s=3D"m_-6339599825489503231gmail_msg"></font></span></div><span class=3D"m_= -6339599825489503231m_1140134821490960840m_-1466682822665794981HOEnZb m_-63= 39599825489503231gmail_msg"><font color=3D"#888888" class=3D"m_-63395998254= 89503231gmail_msg"><div class=3D"m_-6339599825489503231gmail_msg"><br class= =3D"m_-6339599825489503231gmail_msg"></div><div class=3D"m_-633959982548950= 3231gmail_msg">Joel<br class=3D"m_-6339599825489503231gmail_msg"></div></fo= nt></span></div><br class=3D"m_-6339599825489503231gmail_msg"><br class=3D"= m_-6339599825489503231gmail_msg"></div> <br class=3D"m_-6339599825489503231gmail_msg">-----------------------------= -<wbr>------------------------------<wbr>------------------<br class=3D"m_-= 6339599825489503231gmail_msg"> Developer Access Program for Intel Xeon Phi Processors<br class=3D"m_-63395= 99825489503231gmail_msg"> Access to Intel Xeon Phi processor-based developer platforms.<br class=3D"m= _-6339599825489503231gmail_msg"> With one year of Intel Parallel Studio XE.<br class=3D"m_-63395998254895032= 31gmail_msg"> Training and support from Colfax.<br class=3D"m_-6339599825489503231gmail_m= sg"> Order your platform today. <a href=3D"http://sdm.link/xeonphi" rel=3D"noref= errer" class=3D"m_-6339599825489503231gmail_msg" target=3D"_blank">http://s= dm.link/xeonphi</a><br class=3D"m_-6339599825489503231gmail_msg">__________= ____________________<wbr>_________________<br class=3D"m_-63395998254895032= 31gmail_msg"> grinder-use mailing list<br class=3D"m_-6339599825489503231gmail_msg"> <a href=3D"mailto:[email protected]" class=3D"m_-6339599825= 489503231gmail_msg" target=3D"_blank">[email protected]<wbr>ne= t</a><br class=3D"m_-6339599825489503231gmail_msg"> <a href=3D"https://lists.sourceforge.net/lists/listinfo/grinder-use" rel=3D= "noreferrer" class=3D"m_-6339599825489503231gmail_msg" target=3D"_blank">ht= tps://lists.sourceforge.net/<wbr>lists/listinfo/grinder-use</a><br class=3D= "m_-6339599825489503231gmail_msg"> <br class=3D"m_-6339599825489503231gmail_msg"></blockquote></div><br class= =3D"m_-6339599825489503231gmail_msg"></div></div> <br class=3D"m_-6339599825489503231gmail_msg">-----------------------------= -<wbr>------------------------------<wbr>------------------<br class=3D"m_-= 6339599825489503231gmail_msg"> Developer Access Program for Intel Xeon Phi Processors<br class=3D"m_-63395= 99825489503231gmail_msg"> Access to Intel Xeon Phi processor-based developer platforms.<br class=3D"m= _-6339599825489503231gmail_msg"> With one year of Intel Parallel Studio XE.<br class=3D"m_-63395998254895032= 31gmail_msg"> Training and support from Colfax.<br class=3D"m_-6339599825489503231gmail_m= sg"> Order your platform today. <a href=3D"http://sdm.link/xeonphi" rel=3D"noref= errer" class=3D"m_-6339599825489503231gmail_msg" target=3D"_blank">http://s= dm.link/xeonphi</a><br class=3D"m_-6339599825489503231gmail_msg">__________= ____________________<wbr>_________________<br class=3D"m_-63395998254895032= 31gmail_msg"> grinder-use mailing list<br class=3D"m_-6339599825489503231gmail_msg"> <a href=3D"mailto:[email protected]" class=3D"m_-6339599825= 489503231gmail_msg" target=3D"_blank">[email protected]<wbr>ne= t</a><br class=3D"m_-6339599825489503231gmail_msg"> <a href=3D"https://lists.sourceforge.net/lists/listinfo/grinder-use" rel=3D= "noreferrer" class=3D"m_-6339599825489503231gmail_msg" target=3D"_blank">ht= tps://lists.sourceforge.net/<wbr>lists/listinfo/grinder-use</a><br class=3D= "m_-6339599825489503231gmail_msg"> <br class=3D"m_-6339599825489503231gmail_msg"></blockquote></div><br class= =3D"m_-6339599825489503231gmail_msg"></div> ------------------------------<wbr>------------------------------<wbr>-----= -------------<br class=3D"m_-6339599825489503231gmail_msg"> Developer Access Program for Intel Xeon Phi Processors<br class=3D"m_-63395= 99825489503231gmail_msg"> Access to Intel Xeon Phi processor-based developer platforms.<br class=3D"m= _-6339599825489503231gmail_msg"> With one year of Intel Parallel Studio XE.<br class=3D"m_-63395998254895032= 31gmail_msg"> Training and support from Colfax.<br class=3D"m_-6339599825489503231gmail_m= sg"> Order your platform today. <a href=3D"http://sdm.link/xeonphi" rel=3D"noref= errer" class=3D"m_-6339599825489503231gmail_msg" target=3D"_blank">http://s= dm.link/xeonphi</a>_______<wbr>______________________________<wbr>_________= _<br class=3D"m_-6339599825489503231gmail_msg"> grinder-use mailing list<br class=3D"m_-6339599825489503231gmail_msg"> <a href=3D"mailto:[email protected]" class=3D"m_-6339599825= 489503231gmail_msg" target=3D"_blank">[email protected]<wbr>ne= t</a><br class=3D"m_-6339599825489503231gmail_msg"> <a href=3D"https://lists.sourceforge.net/lists/listinfo/grinder-use" rel=3D= "noreferrer" class=3D"m_-6339599825489503231gmail_msg" target=3D"_blank">ht= tps://lists.sourceforge.net/<wbr>lists/listinfo/grinder-use</a><br class=3D= "m_-6339599825489503231gmail_msg"> </blockquote></div> </div><br>------------------------------<wbr>------------------------------= <wbr>------------------<br> Developer Access Program for Intel Xeon Phi Processors<br> Access to Intel Xeon Phi processor-based developer platforms.<br> With one year of Intel Parallel Studio XE.<br> Training and support from Colfax.<br> Order your platform today. <a href=3D"http://sdm.link/xeonphi" rel=3D"noref= errer" target=3D"_blank">http://sdm.link/xeonphi</a><br>___________________= ___________<wbr>_________________<br> grinder-use mailing list<br> <a href=3D"mailto:[email protected]">[email protected]= ceforge.<wbr>net</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/grinder-use" rel=3D= "noreferrer" target=3D"_blank">https://lists.sourceforge.net/<wbr>lists/lis= tinfo/grinder-use</a><br> <br></blockquote></div><br></div> --001a114ac51acd197f0540458abe-- --===============0011909625338660651== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi --===============0011909625338660651== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ grinder-use mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/grinder-use --===============0011909625338660651==--