Re: How to kill slave kernel securely?
- To: mathgroup at smc.vnet.net
- Subject: [mg117198] Re: How to kill slave kernel securely?
- From: "Alexey Popkov" <lehin.p at gmail.com>
- Date: Fri, 11 Mar 2011 04:33:39 -0500 (EST)
Todd, I have discovered that in standard cases when using LinkInterrupt[link, 1] my operating system (Windows 2000 at the moment) releases physical memory only in 0.05-0.1 second beginning with a moment of execution of LinkInterrupt[link, 1] while with LinkClose[link] it releases physical memory in 0.01-0.03 second (both values include the time, spent on execution of the command itself). Time intervals were measured by using SessionTime[] under equal conditions and are steadily reproduced. Is there a way to make LinkInterrupt[link, 1] faster? Alexey Popkov ----- Original Message ----- From: "Todd Gayley" <tgayley at wolfram.com> To: "Alexey" <lehin.p at gmail.com>; <mathgroup at smc.vnet.net> Sent: Thursday, March 10, 2011 4:09 AM Subject: [mg117198] Re: [mg117082] How to kill slave kernel securely? > At 06:00 AM 3/9/2011, Alexey wrote: > >Good day, > > > >LinkClose[link] "does not necessarily terminate the program at the > >other end of the connection" as it is said in the Documentation. Is > >there a way to kill the process of the slave kernel securely? > > > Alexey, > > As you note, the kernel doesn't always die immediately when the link > to it closes. That requires some cooperation from the kernel, and if > the kernel is deep in some computational library function, it might > not be in a position to respond. A much stronger step than just > closing the link is to send the kernel an MLTerminateMessage. From > top-level code (which is what I know you are using): > > LinkInterrupt[link, 1] (* An undocumented form that lets you pick > the message type *) > > In C: > > MLPutMessage(link, MLTerminateMessage); > > In Java using J/Link: > > link.terminateKernel(); > > In .NET using .NET/Link: > > link.TerminateKernel(); > > > Todd Gayley > Wolfram Research > >