<?xml version="1.0"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
		<channel><title>[ISyE Helpdesk] Recently Updated Articles</title><link>http://www.isye.gatech.edu/helpdesk/rss/kb/recent_changes</link><description></description><item><title>Using WinSCP</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
I need to use a secure client to access an ISyE server. Do you have any suggestions? I heard WinSCP is an alternative. &#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;h2&gt;What is WinSCP?&lt;/h2&gt;&#xD;
&lt;p&gt;WinSCP is a freeware SCP (Secure CoPy) client for Windows 95/98/NT/2000/XP/ME&#xD;
    using SSH (Secure SHell). Its main function is safe copying of files between&#xD;
    a local and a remote computer. Beyond this basic function, WinSCP manages&#xD;
    some other actions with files.&lt;p&gt;&#xD;
&#xD;
&lt;h2&gt;How do I use WinSCP to connect to an ISyE UNIX server?&lt;/h2&gt;&#xD;
&lt;p&gt;There are many advanced options available with WinSCP, but to connect to an&#xD;
    ISyE server(e.g. castle.isye.gatech.edu) for a simple interactive login, fill in the information as shown below.  Click Save if you'd like to save this connection for later use.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://herald.isye.gatech.edu/helpdesk/isyedata/images/winscp/winscp1.png"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Verify the connection and choose Yes or No accordingly.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://herald.isye.gatech.edu/helpdesk/isyedata/images/winscp/winscp2.png"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Once you enter the program, drag and drop files between your local computer&#xD;
and the remote machine.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://herald.isye.gatech.edu/helpdesk/isyedata/images/winscp/winscp3.png"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;For more information or to download the software, please visit the WinSCP&#xD;
  Sourceforge area located at &lt;a href="http://winscp.sourceforge.net/eng/" target="_blank"&gt;http://winscp.sourceforge.net/eng/&lt;/a&gt;.&#xD;
  WinSCP can also be downloaded from the Georgia Tech &lt;a href="https://software.oit.gatech.edu/" target="_blank"&gt;OIT&#xD;
  Software Download page&lt;/a&gt;.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/48</link><pubDate>Wed, 01 May 2013 16:09:42 GMT</pubDate><guid isPermaLink="false">75bf2c8061263b30023e3f10a5dfe573</guid></item><item><title>Why did my job die?</title><description>&lt;p&gt;There is no limit to the number of jobs you can submit.  If there are no resources to run jobs, they will simply wait in the queue until resources are made available.  There are a number of reasons jobs might be killed.  The most common reason is that a job used more memory than was available on the machine.  When this happens, the job will be killed in order to preserve the usability of the system.  In addition, the job would most likely not have completed in a reasonable amount of time due to swapping to disk, having used up all available physical memory.  Another possible reason is that the job ran on a private node and the owner logged in or submitted a job to that node.  Private nodes, when not in use by their owners, are in the general cluster.  When a node's owner logs into it, or submits jobs to it, community jobs on the node will be pre-empted in favor of the owner's jobs.  The final reason for a job being killed is that a parallel job was submitted and your job was running on the boyles/wilkins and took longer than 5 calendar days to complete.  These are the parallel machines and will kill serial jobs in favor of a parallel job, but they do have a grace period of 5 calendar days in order to allow the serial jobs to try to reach completion.&lt;/p&gt;

&lt;p&gt;You can see your job history with the condor_history command.  Like so:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;condor_history &amp;lt;username&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can then see the specifics about the job using the -long modifier with the job number.  e.g.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;condor_history -long &amp;lt;jobID&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's the first place to start.&lt;/p&gt;

&lt;p&gt;There is also the log in /tmp.  That gives some very basic info about job statuses.&lt;/p&gt;

&lt;p&gt;If you find more specific details, I may be able to help you interpret them.&lt;/p&gt;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/119</link><pubDate>Wed, 24 Apr 2013 12:58:49 GMT</pubDate><guid isPermaLink="false">b8e7cd422cfe0f51e286a2dc38efb20b</guid></item><item><title>Running out of memory</title><description>&lt;p&gt;Most of the time, if a program is compiled in C and it is using an unusually large amount of memory, then there is a memory leak. Unless you have some specific reason to expect a very large data set in memory, you should first attempt to find the memory leak.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;In most cases, there are techniques you can utilize to optimize your code and reduce your memory footprint.  You might also need to change your strategy for handling your computations.  Perhaps you can slice your dataset and run more smaller jobs to achieve your results.  This is going to give you much more redundancy and a better chance of completing your work, simply because you'll be less vulnerable to losing a lot of work when one job is somehow killed.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;It is not unreasonable to need more than a couple of GB of memory these days, especially if you are using Matlab or another product which can add a fair amount of overhead.  In those cases, you should run a test job to determine the size of your memory footprint.  Run a job and then use the condor_history -long command to view the classed attributes of the job.  Look for image_size.  This is the maximum observed image size reported in KB.  Use this as a guide for setting the image_size attribute in your command file.  That attribute is set in KB as well.  This attribute tells condor that your job may use up to the amount of memory specified.  Condor will use this attribute to match appropriate resources so that you job will not run on a machine with too little memory.</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/116</link><pubDate>Mon, 25 Feb 2013 21:19:06 GMT</pubDate><guid isPermaLink="false">8b17a2d269582fed8a351c30e616bf9c</guid></item><item><title>START HERE:  How to run Unix/Linux compute jobs using Condor</title><description>&lt;h2&gt;Instructions for the use of ISyE's computational Linux cluster:&lt;/h2&gt;&#xD;
&lt;b&gt;Initial requirements&lt;/b&gt;&#xD;
&lt;p&gt;You need an &lt;a href="http://www2.isye.gatech.edu/helpdesk/index.php?x=&amp;mod_id=2&amp;root=16&amp;id=29"&gt;ISyE Unix Account&lt;/a&gt;.&lt;/p&gt;&#xD;
&lt;b&gt;Logging in&lt;/b&gt;&#xD;
&lt;p&gt;The central 64-bit compute server is wren.isye.gatech.edu (or just "wren" if you are on ISyE's subnets).&lt;br&gt;&#xD;
You should be able to access wren via ssh using your usual ISyE Unix account and password.  Your Unix home directory will be mounted and accessible.&lt;/p&gt;&#xD;
&lt;b&gt;Compute cluster hierarchy&lt;/b&gt;&#xD;
&lt;p&gt;The central server, Wren, is called the "head node".  When compute jobs are ready to be run, the head node assigns execution of them to subordinate servers which are called "compute nodes".&lt;br&gt;&#xD;
Users only need to log into the head node.   The compute nodes do not support direct logins, and they cannot mount home directories.  Compute jobs must be submitted to them through the Condor batch queue scheduler.&lt;/p&gt;&#xD;
&lt;b&gt;Development&lt;/b&gt;&#xD;
&lt;p&gt;Development for 64-bit Linux compute jobs should be done on wren, and short interactive test runs can be performed there.  You should test your program "locally" on the head node before submitting it to Condor.   By "local" we mean executing the program in your login shell on wren.&lt;br&gt;&#xD;
You want to make sure your code starts and runs as you expect for at least a few minutes locally on wren, before you submit it to Condor.   By testing the program locally first, you will save yourself and everyone a lot of headaches.  Condor works great once your code is ready to go, but it's a very frustrating way to debug!&lt;br&gt;&#xD;
Long-running compute jobs and large batches of unattended short-running jobs are not allowed on the head node.&lt;br&gt;&#xD;
GUI development interfaces can be exported to the local X Windows desktop via ssh X forwarding (the ssh -X option).&lt;/p&gt;&#xD;
&lt;b&gt;Condor commands&lt;/b&gt;&#xD;
&lt;p&gt;Condor's executables are located in /opt/condor/bin, which should be in your default command path on wren, with man pages available for most important commands.&lt;/p&gt;&#xD;
Generally the most useful Condor commands are:&#xD;
&lt;pre&gt;&#xD;
   condor_submit -- submit jobs to the condor batch scheduler.&lt;br&gt;&#xD;
   condor_status -- show overall cluster status.&lt;br&gt;&#xD;
   condor_q      -- show current job queue and status of jobs.&lt;br&gt;&#xD;
   condor_rm     -- remove jobs from the condor queue.&lt;br&gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;b&gt;Job submission&lt;/b&gt;&#xD;
&lt;p&gt;For most compute jobs, you will need to create a condor submit description file (a ".cmd" file) and then run "condor_submit &lt;filename&gt;.cmd".&lt;br&gt;&#xD;
An example .cmd file is listed below.   Other examples can be found in /opt/condor/examples, and the syntax for .cmd files is documented in the condor_submit man page.&lt;br&gt;&#xD;
In the simplest cases, you can submit a job to condor by running "consub &lt;i&gt;filename&lt;/i&gt;".  This will work for a simple program that has no options, no input and output files (so if run locally, output would go to the screen).  consub will create a simple &lt;i&gt;filename&lt;/i&gt;.cmd file, copy the executable to a compute node and run the job, and then copy the output back to &lt;i&gt;filename&lt;/i&gt;.out.&lt;/p&gt;&#xD;
&lt;b&gt;File accessibility on the compute nodes&lt;/b&gt;&#xD;
&lt;p&gt;You can run jobs directly from your Unix home directory tree, and all your files will be accessible to the compute nodes.&lt;br&gt;&#xD;
If you need more space than currently allocated, request it from IT.&lt;br&gt;&#xD;
It is possible to transfer files to the nodes, and then back to wren upon completion (should_transfer_files).  On dedicated compute clusters like ours this is generally not the desired method.  Your home directory is mounted on the compute nodes just as it is on wren or castle, so there is really no need to transfer files.&lt;/p&gt;&#xD;
&lt;b&gt;Log files&lt;/b&gt;&#xD;
&lt;p&gt;The Condor log file should be written to /tmp, rather than to your home directory tree.   Any user can create a directory in /tmp.   Typically just create /tmp/&lt;username&gt; and use that as an output path for the "log" directive (see example below).&lt;/p&gt;&#xD;
&lt;b&gt;Condor universe&lt;/b&gt;&#xD;
&lt;p&gt;You must specify a "universe" to run a condor job in.  For basic compute jobs written in any language, add a line to use the "vanilla" universe.  If you do not explicitly specify the universe, it will default to "standard" universe which will not work without special compile-time options.&lt;/p&gt;&#xD;
&lt;b&gt;Example .cmd file&lt;/b&gt;&#xD;
&lt;pre&gt;&#xD;
    universe        = vanilla&#xD;
    executable      = foo&#xD;
    output          = foo.out&#xD;
    error           = foo.err&#xD;
    log             = /tmp/&lt;username&gt;/foo.log&#xD;
    arguments       = 10 20 30&#xD;
    queue&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;This command file should be called "foo.cmd" and placed in the same global scratch space subdirectory as the program "foo".  You will then type "condor_submit foo.cmd" to run this compute job.   Normal screen output will go to to "foo.out" and stderr will go to "foo.err".   The program expects three command-line&#xD;
arguments which are "10", "20", and "30".&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;Note that the log file is placed in /tmp!  This is very important!&lt;/b&gt;   Log files written to NFS-mounted home or scratch directories will often break condor due to NFS locking problems.   So, once again, create a directory for yourself in /tmp, and write your log files there.&lt;/p&gt;&#xD;
&lt;p&gt;Any other input and output files generated by the program will be accessed normally, as long as the path is accessible to the program (normally, this means in your home or scratch directory).&lt;/p&gt;&#xD;
&lt;p&gt;In many cases you may also need to run jobs that won't work correctly without your login environment variables (such as PATH, LD_LIBRARY_PATH, or software-specific environment variables).  Since these won't be available by default on the compute nodes, you need to explicitly add them via the submit file using this line:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
     getenv = true&#xD;
&lt;/pre&gt;&#xD;
&lt;b&gt;Notification&lt;/b&gt;&#xD;
&lt;p&gt;The cluster will not normally notify you of job completion.   If you'd like notification, you should add one of the following lines depending on the level of notification you would like:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
    notification = error        &#xD;
    notification = complete&#xD;
    notification = always&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;The default email address for these notifications is the ISyE email address of the user submitting the jobs.  If you'd like mail sent to an alternate address, add the following line:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
    notify_user = my.email@domain.com&#xD;
&lt;/pre&gt;&#xD;
&lt;b&gt;More on Condor&lt;/b&gt;&#xD;
&lt;p&gt;For further documentation, please see the &lt;a href="http://www.cs.wisc.edu/htcondor/manual/v7.9"&gt;Condor User's Manual&lt;/a&gt;.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/95</link><pubDate>Mon, 25 Feb 2013 21:07:53 GMT</pubDate><guid isPermaLink="false">7bd9c8a2f87f425f4ac8e13028bf63e5</guid></item><item><title>Why is my job stuck in idle?</title><description>&lt;p&gt;There are any number of reasons a job can remain idle. The first thing to do is check the job's output files, then use the command "condor_q -l" to get a long format job listing.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;One common reason for idle jobs is running out of memory, which is usually due to memory leaks. The condor_q -l output contains the "ImageSize" attribute, expressed in KB. If this amount is larger than 12000000 (12GB) then you know you have a problem; and it could be a problem even at "only" 8GB.&lt;/p&gt;&#xD;
&#xD;
For more detailed information, please see the appropriate section of the condorHT manual &lt;a href="http://research.cs.wisc.edu/htcondor/manual/v7.9/2_6Managing_Job.html#SECTION00365000000000000000"&gt;2.6.5 Why is the job not running?&lt;/a&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/117</link><pubDate>Mon, 25 Feb 2013 13:39:34 GMT</pubDate><guid isPermaLink="false">b6f4b8a9d1c99303c430e11580e5fe35</guid></item><item><title>Tracking time in condor</title><description>&lt;p&gt;Condor tracks a number of different elapsed time counters.  This page details the different time counters that condor maintains.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://research.cs.wisc.edu/htcondor/manual/v7.6/2_6Managing_Job.html" title="http://research.cs.wisc.edu/htcondor/manual/v7.6/2_6Managing_Job.html"&gt;http://research.cs.wisc.edu/htcondor/manual/v7.6/2&lt;em&gt;6Managing&lt;/em&gt;Job.html&lt;/a&gt;&lt;/p&gt;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/118</link><pubDate>Mon, 25 Feb 2013 02:11:52 GMT</pubDate><guid isPermaLink="false">b7d50c004df7e5d333823f9eea7ddcd7</guid></item><item><title>Mapping a Network Drive</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
I am working on a Windows machine and need access to a SAMBA share.&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;h2 class="kbsubheading1"&gt;What is SAMBA?&lt;/h2&gt;&#xD;
&lt;p&gt;Samba is a suite of Unix applications that speak the SMB (Server Message Block)&#xD;
  protocol. Many operating systems, including Windows and OS X, use SMB to perform&#xD;
  client-server networking. By supporting this protocol, Samba allows Unix servers&#xD;
  to get in on the action, communicating with the same networking protocol as&#xD;
  Microsoft Windows products. Thus, a Samba-enabled Unix machine can masquerade&#xD;
  as a server on your Microsoft network and offer the following services:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Share one or more filesystems&lt;/li&gt;&#xD;
  &lt;li&gt;Share printers installed on both the server and its clients&lt;/li&gt;&#xD;
  &lt;li&gt;Assist clients with Network Neighborhood browsing&lt;/li&gt;&#xD;
  &lt;li&gt;Authenticate clients logging onto a Windows domain&lt;/li&gt;&#xD;
  &lt;li&gt;Provide or assist with WINS name server resolution&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Specific to ISyE,  UNIX account holders can use SAMBA to access their&#xD;
    UNIX home directories and file shares from various Windows PCs on the ISyE&#xD;
network.  Also, please note SAMBA access is only available from within the ISyE network.&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span class="kbsubheading2"&gt;How to map a samba share:&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1. Open Windows Explorer on the local machine.&lt;br&gt;&#xD;
2. Select Tools-&gt;Map Network Drive (Windows XP). Select Map network drive (Windows 7).&lt;br&gt;&#xD;
3. Enter &lt;code&gt;\\[server name][share name]&lt;/code&gt;. Share name is the directory that you want to map to, server name is the name of the samba server. To map to your ISyE UNIX home directory, either use your UNIX account name or the word "homes".&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;e.g. &lt;code&gt;\\samba.isye.gatech.edu\homes&lt;/code&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;4. Click Finish.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;img src="http://herald.isye.gatech.edu/helpdesk/isyedata/images/camtasia.gif"&gt; &lt;a href="http://www.isye.gatech.edu/helpdesk/isyedata/mappingdrive.html" target="_blank"&gt;View the Video&lt;/a&gt;&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/14</link><pubDate>Thu, 14 Feb 2013 21:25:51 GMT</pubDate><guid isPermaLink="false">3b89532534774fe5367881c82fdda001</guid></item><item><title>Running multiple iterations in condor</title><description>&lt;p&gt;Many ISyE research problems involve running many separate iterations of the same code with either random or predetermined inputs.   Condor excels at these types of problems.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;When running on a single computer, the most common solution is set up  loops and let just one or a few processes iterate through the inputs (sometimes generating random inputs along the way).&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;However, it is much more convenient and faster to let Condor handle the looping.   If you can feed Condor multiple small jobs - anywhere from a minute to an hour in expected run time - it can spread them out onto all available resources and finish them very quickly.&lt;/p&gt;&#xD;
&#xD;
&lt;h3&gt;Example 1:  C program&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;We need to process 1000 different sets of input constraints using a compiled executable named "program0", written in C with the first argument being the input file.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;First in our working directory we do 'mkdir in;  mkdir out'.   Put the data in 1000 separate files in the input directory, with names containing the integers 0 through 999.   Here we will use 0.in through 999.in.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Then create the Condor submit file, 'program0.cmd':&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
universe    = vanilla&#xD;
executable  = program0&#xD;
arguments   = in/$(Process).in&#xD;
output      = out/$(Process).out&#xD;
error       = out/$(Process).err&#xD;
queue 1000&#xD;
&lt;/pre&gt;&#xD;
Submit this script, and you should have 1000 jobs queued up that will iterate through your data and create 1000 output files.&#xD;
&#xD;
&lt;h3&gt;Example 2 :  Matlab&lt;/h3&gt;&#xD;
&#xD;
&lt;p.Sometimes we need to include the name of our input data file in the code, rather than using an argument.   One such case is with Matlab.    Nevertheless, the technique is still very simple.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;First, we need for our Matlab program to have an input variable for the process number, taken from Condor's $(Process) macro.  Then we use that variable within the Matlab program to determine the name of the file to read.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Then the Condor submit file looks like this:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
universe = vanilla&#xD;
executable  = /usr/local/bin/matlab&#xD;
arguments   = -singleCompThread -r clear -r procnum=$(Process)&#xD;
input       = program0.m&#xD;
output      = out/$(Process).out&#xD;
error       = out/$(Process).err&#xD;
queue 1000&#xD;
&lt;/pre&gt;&#xD;
&lt;h3&gt;Random inputs:&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;The above examples assume that the user has a predetermined set of input data to use, but what about generating the data at random in the program?&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;That can be done, but there is a major catch:  the random seed needs to be the same to ensure valid randomness.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This could be accomplished by importing a constant random seed within the program.  But the far easier method is to use a single program to generate the random input data you need, then set it up as in the examples above.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/106</link><pubDate>Thu, 06 Dec 2012 16:25:56 GMT</pubDate><guid isPermaLink="false">6e9398e440cf17ed4902b11e489ea6c9</guid></item><item><title>Why do my jobs keep restarting in condor?</title><description>&lt;p&gt;Jobs in the normal Condor queues (those on Wren) are subject to preemption. When a job is preempted, it is vacated from the node and restarted elsewhere.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Jobs are usually stopped and restarted on Condor for one of four reasons:&lt;/p&gt;&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;Someone logs in locally to the execute machine. Many of our Condor compute nodes were bought by individual faculty members for their own research, and a direct shell login by one of their users will cause jobs to vacate.&lt;/li&gt;&#xD;
&lt;li&gt;You're running your job on the boyles and someone submitted an MPI job.  While we have turned off priority pre-emption, parallel universe jobs will still pre-empt other jobs.  The time to vacate is set at 5 calendar days.  If your job does not complete within 5 calendar days, it will be vacated from the nodes in deference to the parallel universe job.&lt;/li&gt;&#xD;
&lt;li&gt;The job ran out of memory.   Initially the process will be killed and the job will be restarted on another machine with more available memory. If memory usage keeps rising, eventually the job will just remain idle.&lt;/li&gt;&#xD;
&lt;li&gt;The node died while your job was running on it. This usually happens due to memory errors, which could be either yours or another user's.&lt;/li&gt;&lt;/ol&gt;&#xD;
&#xD;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/114</link><pubDate>Thu, 06 Dec 2012 13:56:09 GMT</pubDate><guid isPermaLink="false">c5986f5720352a9910072b75e2b36584</guid></item><item><title>How can I avoid pre-emption of my long-running jobs?</title><description>&lt;p&gt;The best way to use Condor, when possible, is to break down large tasks into smaller ones and submit many small jobs rather than a few large ones. This makes preemption irrelevant because it's not a big deal if small jobs are restarted from the beginning.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;For longer jobs, checkpointing is recommended.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;If a job can't be easily broken down into smaller components, and it isn't checkpointed, then routine preemption can be prevented by running in the dedicated queue on hooke.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/115</link><pubDate>Fri, 30 Nov 2012 17:51:42 GMT</pubDate><guid isPermaLink="false">063f0b80450ccc882f43d151a1596fbb</guid></item><item><title>Matlab in condor</title><description>&lt;p&gt;Matlab must have threading disabled for use in the normal Condor queue. To do tihs, use the command line argument "-singleCompThread".&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Under Condor we can achieve total higher compute throughput without threading, and will finish more jobs faster.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;When launching Matlab in batch mode from the Unix shell, the program name is piped from STDIN rather than being an argument as in some other languages.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Thus for the Matlab program "program0.m", the command line for testing would be:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;matlab -singleCompThread &lt; program0.m&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Then the Condor submit script would look like this:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
universe = vanilla&#xD;
executable  = /usr/local/bin/matlab&#xD;
arguments   = -singleCompThread&#xD;
input       = program0.m&#xD;
output      = program0.out&#xD;
error       = program0.err&#xD;
queue&lt;/pre&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/113</link><pubDate>Fri, 30 Nov 2012 17:48:05 GMT</pubDate><guid isPermaLink="false">2c6d8fa04f272f8d5f4092fad6b8f6c0</guid></item><item><title>CPLEX in condor</title><description>&lt;h3&gt;Disabling threading in CPLEX&lt;/h3&gt;&#xD;
&#xD;
&lt;p&gt;Since version 12.2, CPlex defaults to multithreading its executables.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This is a problem for several reasons and multithreading should be disabled in almost all cases. Not only does Condor handle single threaded jobs much better, but they will usually produce better performance.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;We've modified the default environment in several places but it doesn't seem to work consistently. Thus users need to manually add a line to their C/C++ programs before compilation to turn off threading.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The C function call to disable threading should be put at the beginning of main():&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;CPXsetintparam(env, CPX_PARAM_THREADS, 1);&lt;/pre&gt;&#xD;
&lt;p&gt;In an AMPL batch file the command to turn off multithreading is:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;option cplex_options 'threads=1';&lt;/pre&gt;&#xD;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/112</link><pubDate>Fri, 30 Nov 2012 17:45:57 GMT</pubDate><guid isPermaLink="false">15aca35fa3d3207691c7d37b617be742</guid></item><item><title>Timing processes</title><description>&lt;p&gt;Determining process compute time is a common need in ISyE for such tasks as comparing algorithm efficiency.   However, use of real time is likely to give erroneous results due to variations in compute environment, such as higher load and more context switching on some nodes than others.  It is also possible that jobs can be suspended briefly without restarting from the beginning, which could greatly throw off compute times.&lt;/p&gt;&#xD;
&lt;p&gt;If you need to measure the compute time, you should use the USER time of the process to get the actual time it has been running on the processor.&lt;/p&gt;&#xD;
&lt;p&gt;In C, this value can be extracted with the getrusage() function.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The following example program runs three counting loops, but each subsequent step includes a longer sleep().   Nevertheless, the same elapsed time is reported for each step (within a millisecond).  The function timeval_subtract() is taken from this GNU tutorial determining on elapsed CPU time.&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
#include &lt;sys/time.h&gt;&#xD;
#include &lt;sys/resource.h&gt;&#xD;
#include &lt;stdio.h&gt; &#xD;
&#xD;
int main() {&#xD;
  int i, j, k;&#xD;
  struct rusage usage;&#xD;
  struct timeval current;&#xD;
  struct timeval previous = {0, 0}; &#xD;
&#xD;
  for (i=0; i&lt;3; i++)  {&#xD;
     k=0;&#xD;
     for (j=0; j&lt;100000000; j++) {&#xD;
        k++;&#xD;
     }&#xD;
     printf("Sleeping for %d seconds after counting\n", i);&#xD;
     sleep(i);&#xD;
     getrusage(RUSAGE_SELF, &amp;usage);&#xD;
     timeval_subtract (&amp;current, &amp;usage.ru_utime, &amp;previous);&#xD;
     printf("Part %d took %d.%06d seconds of CPU time\n",i+1,  current.tv_sec,current.tv_usec);&#xD;
     previous=usage.ru_utime;&#xD;
  }&#xD;
} &#xD;
&#xD;
int timeval_subtract (result, x, y)&#xD;
struct timeval *result, *x, *y;&#xD;
{ &#xD;
&#xD;
 /* Perform the carry for the later subtraction by updating y. */&#xD;
  if (x-&gt;tv_usec &lt; y-&gt;tv_usec) {&#xD;
     int nsec = (y-&gt;tv_usec - x-&gt;tv_usec) / 1000000 + 1;&#xD;
     y-&gt;tv_usec -= 1000000 * nsec;&#xD;
     y-&gt;tv_sec += nsec;&#xD;
  }&#xD;
  if (x-&gt;tv_usec - y-&gt;tv_usec &gt; 1000000) {&#xD;
     int nsec = (x-&gt;tv_usec - y-&gt;tv_usec) / 1000000;&#xD;
     y-&gt;tv_usec += 1000000 * nsec;&#xD;
     y-&gt;tv_sec -= nsec;&#xD;
  } &#xD;
&#xD;
  /* Compute the time remaining */&#xD;
  /* tv_usec is certainly positive */&#xD;
  result-&gt;tv_sec = x-&gt;tv_sec - y-&gt;tv_sec;&#xD;
  result-&gt;tv_usec = x-&gt;tv_usec - y-&gt;tv_usec; &#xD;
&#xD;
 /* Return 1 if result is negative. */&#xD;
  return x-&gt;tv_sec &lt; y-&gt;tv_sec;&#xD;
}&#xD;
&lt;/pre&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/111</link><pubDate>Fri, 30 Nov 2012 17:44:16 GMT</pubDate><guid isPermaLink="false">55212dd6179f47bf26b020f42bf0a2c9</guid></item><item><title>Condor and library paths</title><description>&lt;p&gt;Sometimes a condor job will return an error beginning with: &lt;pre&gt;condor_exec.exe: error while loading shared libraries&lt;/pre&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This can happen because the software you need is not installed on the execute node, in which case you should exclude that execute node in your submit file and let us know about the problem.    You can safely assume that is the problem if you're still getting the error after following the steps outlined below.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;More often, the software is on the execute node but is not in its default library search path. All third-party software is installed in /opt, which is a shared network filesystem common to all execute nodes as well as some other machines, including hooke.   Thus if the program works in one place, it should work everywhere  IF the default library paths are the same.   Sometimes they aren't.   We try to keep the nodes consistent, but there are over 100 of them in many different small clusters, and sometimes they diverge.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Fortunately, the problem can be easily remedied in the user's shell environment. The search path will add the paths in the environment variable LD_LIBRARY_PATH.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Here is an example using Gurobi 4.5:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;condor_exec.exe: error while loading shared libraries: libgurobi45.so: cannot open shared object file: No such file or directory&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;The problem here is most likely that the execute node doesn't know where to find the shared library file it needs, libgurobi45.so. It should be able to, if wren could, but sometimes that doesn't happen even though the software is actually there.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Fortunately, this is a very easy fix. We only need to find the location of libgurobi45.so, and add that directory path to our environment on the execute node.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The library should be in a fairly obvious place. All special third-party applications are installed in /opt, and most libraries are in a "lib" or "lib64" subdirectory somewhere in their application's directory tree. If we do an "ls" in /opt we find that Gurobi 4.5 is in /opt/gurobi450. It's quickly obvious from there that the most likely library path is /opt/gurobi450/linux64/lib, and an "ls" on that directory does in fact show that it contains libgurobi45.so.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Alternatively, we could use the "find" command, like this:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
wren:~ $ cd /opt/gurobi&#xD;
wren:/opt/gurobi $ find . -name libgurobi45.so 2&gt;/dev/null&#xD;
./linux64/lib/libgurobi45.so&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Once we know the directory that contains the needed library, we need to add it to the environment variable LD_LIBRARY_PATH on the execute node. This in can be done in two ways:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;1. Add it to your login profile (usually via .profile, .bashrc, or .bash_profile) and ensure "getenv = True" is in your submit file so that the execute node uses your login environment. The syntax in your login profile is:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gurobi450/linux64/lib&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;This is usually the best method.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;2. If for some reason you don't want your entire login environment exported on the submit node, you could add the needed environment variable to the submit file explicitly:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;Environment LD_LIBRARY_PATH=/opt/gurobi450/linux64/lib&lt;/pre&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/110</link><pubDate>Fri, 30 Nov 2012 17:42:17 GMT</pubDate><guid isPermaLink="false">ca114824a31838e0ee15fa11d17d02be</guid></item><item><title>Condor submit file examples</title><description>Some example submit file syntax all would go before the "queue" command.&#xD;
&#xD;
&lt;p&gt;Force a job to run on a single node:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;+Requirements = Machine == "boyle16.isye.gatech.edu"&lt;/pre&gt;&#xD;
&lt;p&gt;Allow each queued process to run on any one of a specified set of multiple nodes:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;+Requirements = (Machine == "boyle1.isye.gatech.edu" || Machine == "boyle2.isye.gatech.edu" || Machine == "boyle3.isye.gatech.edu")&lt;/pre&gt;&#xD;
&lt;p&gt;Thus far the only method we've gotten to work is the use of a separate full test statement for each desired machine. We've seen no examples using wildcard or syntax shortcuts, and the obvious guesses fail.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Also, if all specified nodes are unavailable, the job will remain idle with LastRejMatchReason = "no match found"&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;To disallow specific nodes, simply replace the operator:&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;+Requirements = (Machine != "goddard1.isye.gatech.edu" || Machine != "goddard2.isye.gatech.edu")&lt;/pre&gt;&#xD;
&lt;p&gt;This can be useful if you find that software is misconfigured on a given set of nodes, etc. We try to avoid this but it does occasionally happen.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/109</link><pubDate>Fri, 30 Nov 2012 17:36:24 GMT</pubDate><guid isPermaLink="false">55a58e9131a635301af111bd611b7373</guid></item><item><title>Dedicated Queue</title><description>&lt;p&gt;Condor's primary queue is oriented towards cycle harvesting.   This means that jobs running in the vanilla universe on Wren are subject to preemption for one of several reasons.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Some users need to run long jobs without checkpointing, where preemption means restarting from the beginning and losing days of computing time.    As a practical matter it can often mean never finishing the job at all.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;To alleviate this problem we have provided a dedicated queue.   This queue runs from a different submission machine, hooke (hooke.isye.gatech.edu).   The queue does have a disadvantage in that it has fewer assigned machines and you may have to wait longer for a slot to open up.   However, if you have just a few long-running jobs, it's the way to go.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Submitting from hooke requires only a couple of changes.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;First, obviously, you must log into hooke to submit the job.   This can be done simply by doing "ssh hooke" whenever your code is ready to go.   You don't need to do any of the development on hooke;  that should be done on wren and then just log into hooke when you're ready to submit.  Once you've submitted the job, you will need to monitor it on hooke as well.    Wren's queue and history will not contain the details of the job.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Finally, the submit file requires a couple of changes.   The universe should be changed to "parallel", and the line "machine count = 1" needs to be added before the"queue" statement.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;So an example submit file for the dedicated queue from hooke looks like this:&lt;/p&gt;&#xD;
&lt;pre&gt;&#xD;
universe   = parallel&#xD;
executable = mycode&#xD;
output     = mycode.out&#xD;
error      = mycode.err&#xD;
arguments  = 10 20&#xD;
machine_count = 1&#xD;
queue&lt;/pre&gt;&#xD;
&lt;p&gt;Once you have this in place you can submit the job normally via "condor_submit", and the job should normally run to completion rather than being subject to preemption.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/108</link><pubDate>Fri, 30 Nov 2012 17:31:41 GMT</pubDate><guid isPermaLink="false">59b0085f60fcf3ff36d27d5ac15ab07f</guid></item><item><title>MPI Jobs</title><description>&lt;p&gt;Condor supports high-speed distributed parallel computing using OpenMPI.   MPI jobs require use of the dedicated queue on hooke, and can't be submitted from wren.&lt;/p&gt;

&lt;p&gt;MPI jobs are run on the Boyle nodes, consisting of 16 eight-core machines with a low-latency Infiniband cross-connect between the nodes. OpenMPI jobs automatically use the fastest available transport method for message passing between processes.&lt;/p&gt;

&lt;p&gt;Condor handles MPI jobs via a front end wrapper script called ompiscript (full path:  /usr/local/bin/ompiscript).   This wrapper is submitted as the executable name, and the submitter's MPI executable becomes the first command line argument.   The wrapper automates all of the usual tasks associated with starting an MPI job:  creates a hosts file, does the "mpirun" command, and takes care of passwordless ssh access.&lt;/p&gt;

&lt;p&gt;Of course it remains crucial that users make sure their MPI code works in the shell before submitting it to Condor.&lt;/p&gt;

&lt;p&gt;Submit file examples follow.&lt;/p&gt;

&lt;p&gt;&lt;h3&gt;Example 1:  running on any available nodes&lt;/h3&gt;&lt;/p&gt;

&lt;p&gt;The generic form of MPI submission will run on any available CPU (currently this means just on the boyle nodes).   Contact IT first if you intend to submit an MPI job to more than 32 CPUs.&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;
universe = parallel
executable = /usr/local/bin/ompiscript
arguments = exe1 argv1 argv2 ....
getenv = True          ## needed for your env to be present on execute nodes
output = exe1.out   ## stdout
error = exe.err    ## stderr
machine_count = 32
queue&lt;/pre&gt;
&lt;p&gt;If you want separate output files for each process, you can use a macro like this:&lt;/p&gt;
&lt;pre&gt;
output = out/exe1.out.$(NODE)
error = out/exe1.err.$(NODE)&lt;/pre&gt;
&lt;h3&gt;Example 2: Running a job on a specific node&lt;/h3&gt;&lt;/p&gt;

&lt;p&gt;If a job is run on 8 CPUs it can be kept on a single node, which will produce slightly faster interprocess communication. The user will need to find a node with no jobs currently running on it and specify that node in the command file.&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;
universe = parallel
executable = /usr/local/bin/ompiscript
arguments = exe2 argv1 argv2 ....
getenv = True&lt;br&gt;
output = exe2.out
error = exe2.err
machine_count = 8
queue
&lt;/pre&gt;&lt;/p&gt;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/107</link><pubDate>Fri, 30 Nov 2012 17:25:14 GMT</pubDate><guid isPermaLink="false">b69553fafb4fda6781d0e4e4fb94083a</guid></item><item><title>Using the ISyE Virtual Private Network (VPN)</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
I am a faculty or staff member and need access to the ISyE network (VPN access is not available to students).&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;p&gt;For anyone connecting to the internet, through any means and from any location, running the VPN client software provides a secure virtual connection between your computer and the ISyE computer network. This technology allows you to take advantage of all network related services offered within the department from any location. &lt;strong&gt;Please note that VPN accounts are available for ISyE faculty and staff only.&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Receiving and sending email is easier (with no 'server' configuration changes as are required currently), SAMBA (remote file sharing services) will now be available from remote locations as well as a number of other services coming on line over the next year. One last significant benefit is that VPN encrypts all data transferred between your computer and the ISyE network. This helps to protect your passwords, email and any other sensitive data that might be transmitted. If you would like more information on VPN, or are interested in getting setup to use VPN from home or from a laptop, please read the following.&lt;/p&gt;&#xD;
&lt;h2 class="kbsubheading1"&gt;NEW Cisco ISYE VPN Installation Instructions&lt;/h2&gt;&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt; Direct your browser to &lt;a href="http://vpn.isye.gatech.edu"&gt;http://vpn.isye.gatech.edu&lt;/A&gt;.&lt;/li&gt;&#xD;
&lt;li&gt; Log in with your ISyE username and password.&lt;/li&gt;&#xD;
&lt;li&gt; The system will check to see if the client is installed.  If it is not, it will prompt you to download and install it.&lt;/li&gt;&#xD;
&lt;li&gt; When the client is installed, the web page will start the client and begin the connection process.&lt;/li&gt;&#xD;
&lt;li&gt; The Cisco client is the same one used by Georgia Tech for campus-wide VPN access.  Sometimes, if you have accessed the Georgia Tech VPN, it can overwrite the ISyE settings.  If you see anyc.vpn.gatech.edu then the ISyE settings have been overwritten by the OIT settings.  Visiting &lt;a href="http://vpn.isye.gatech.edu"&gt;http://vpn.isye.gatech.edu&lt;/A&gt; again will direct the client back to ISyE.  &lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&#xD;
&lt;h2 class="kbsubheading1"&gt;OLD Nortel ISYE VPN Installation Instructions&lt;/h2&gt;&#xD;
&#xD;
&lt;p&gt;1. &lt;strong&gt;Before proceeding, please contact Allen Belletti @4-6221&#xD;
    to obtain a username and ask to be added to the system. Without this step,&#xD;
    you will not be able to access the ISyE network using the software. If&#xD;
  you have a previous version of the VPN Client already installed, please remove&#xD;
  it using add/remove programs under the windows control panel before installing&#xD;
  the new version. Also, if this is the case, use the password assigned to you,&#xD;
not the initial password as noted below.&lt;/strong&gt;&#xD;
&lt;p&gt; 2. Download and run the file named &lt;a href="http://herald.isye.gatech.edu/helpdesk/isyedata/files/VPN_Client_4_91_021.exe"&gt;VPN_Client_4_91_021.exe&#xD;
    (3.3MB)&lt;/a&gt;.&#xD;
    &lt;strong&gt;Please note that you must have administrator rights&#xD;
on the local machine to install the software&lt;/strong&gt;.&#xD;
&lt;p&gt; 3. Accept all the installation defaults by clicking on the YES and NEXT buttons.&#xD;
&lt;p&gt; 4. When the installation has completed, restart the computer.&#xD;
&lt;p&gt; 5. After restart,   run the Contivity VPN Client program located on the desktop or in the Nortel&#xD;
Networks Program Group within the Start Menu.&#xD;
&lt;p&gt; 6. Click on NO when asked to use the Connection Wizard to create a connection.&#xD;
&lt;p&gt; 7. Enter the following information into the appropriate fields:&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt; Connection: &lt;code&gt;Georgia Tech ISyE VPN&lt;/code&gt;&lt;br&gt;&#xD;
    Description: &lt;code&gt;Georgia Tech ISyE VPN&lt;/code&gt;&lt;br&gt;&#xD;
    Dial-up: &lt;code&gt;(None) &lt;/code&gt;&lt;br&gt;&#xD;
    User Name: &lt;code&gt;(Enter your current ISYE User ID)&lt;/code&gt;&lt;br&gt;&#xD;
    Password: &lt;code&gt;gtisyevpn (initial password only - should be changed on first connection)&lt;/code&gt;&lt;br&gt;&#xD;
    Save Password: &lt;code&gt;(Click on the box to place a check  inside it.)&lt;/code&gt;&lt;br&gt;&#xD;
    Destination: &lt;code&gt;130.207.91.149&lt;/code&gt;&lt;br&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
8. Click on the SAVE button.&lt;br&gt;&#xD;
9. Click on the CONNECT button.&lt;br&gt;&#xD;
10. Change your password on first connection. To change the password, right-click on the VPN icon in the lower right corner of the screen and choose "Change Password".&lt;br&gt;&#xD;
&#xD;
&lt;p class="callout"&gt;***Please do not set the  Contivity software to automatically&#xD;
  load every time Windows is started. This would be quite detrimental to a laptop&#xD;
  that was brought back onto campus, because it would needlessly route all network&#xD;
traffic through the VPN server.&lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/6</link><pubDate>Tue, 06 Nov 2012 23:28:07 GMT</pubDate><guid isPermaLink="false">2d02b7731e0343869cff0d772cf44ae4</guid></item><item><title>Using SecureCRT</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
I need to use an SSH client to access an ISyE server. Do you have any suggestions? I heard SecureCRT is available at ISyE.&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;p&gt;Access to ISyE UNIX servers is available from anywhere in the world via the ssh2 protocol. There are free and commercial ssh clients available for most platforms (UNIX/Linux, Windows and Macintosh). SecureCRT is available on most all ISyE supported computers.&lt;/p&gt;&#xD;
&#xD;
&lt;h2&gt;&lt;strong&gt;Using SecureCRT to connect to an ISyE UNIX server&lt;/strong&gt;&lt;/h2&gt;&#xD;
&lt;p&gt;There are many advanced options available with ssh, but to connect to an ISyE&#xD;
  server (e.g. castle.isye.gatech.edu) for a simple interactive login, fill in&#xD;
  the information as shown below. &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://herald.isye.gatech.edu/helpdesk/isyedata/images/ssh1.gif" alt="SSH Quick Connect Screen"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;You may wish to save the session as "castle" or "ISyE" so you don't need to configure it each time you use the program. The first time you connect, the program will prompt you with &#xD;
this message: &lt;/p&gt;&#xD;
&lt;p&gt; &lt;img src="http://herald.isye.gatech.edu/helpdesk/isyedata/images/ssh2.gif" alt="Host Key screen"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;If you select  &lt;strong&gt;Accept &amp; Save&lt;/strong&gt;, you will not be prompted&#xD;
  again. &lt;/p&gt;&lt;p class="note"&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SecureCRT supports secure file transfers, &#xD;
from the windows command line which can be used as a substitute for FTP. See &lt;a  href="http://www.vandyke.com/products/securecrt/screenshots/screenshot5.html" target="_blank"&gt;SecureCRT-VCP File Transfer Utility&lt;/a&gt; for specific information on VCP.&lt;/p&gt;&#xD;
&lt;p&gt;WinSCP can also be used for secure file transfers. See &lt;a  href="http://www2.isye.gatech.edu/helpdesk/index.php?x=&amp;mod_id=2&amp;root=37&amp;id=49" target="_blank"&gt;WinSCP&lt;/a&gt; for specific information on WinSCP.&lt;/p&gt;&#xD;
&lt;p&gt;Georgia Tech Faculty &amp; Staff can download SecureCRT and WinSCP at &lt;a href="https://software.oit.gatech.edu/"&gt;https://software.oit.gatech.edu/&lt;/a&gt;.</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/44</link><pubDate>Thu, 20 Sep 2012 15:18:25 GMT</pubDate><guid isPermaLink="false">4c1a84d6c8022cf0cc75feb6690dde1e</guid></item><item><title>Securely Connecting to ISyE Servers</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
I heard that telnet access was being turned off in favor of SSH2. How do I connect to an ISyE server now that this is the case?&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;p&gt;The main points of this article are as follows: &#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Use &lt;code&gt;ssh&lt;/code&gt; instead of &lt;code&gt;telnet, rlogin&lt;/code&gt;, or &lt;code&gt;rsh&lt;/code&gt; when&#xD;
    possible (these services have been turned off on many of the ISyE servers) &#xD;
  &lt;li&gt;For a single file, use &lt;code&gt;scp&lt;/code&gt; instead of &lt;code&gt;ftp&lt;/code&gt;&#xD;
  &lt;li&gt;For multiple files, use &lt;code&gt;sftp&lt;/code&gt; instead of &lt;code&gt;ftp&lt;/code&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;The problem with &lt;code&gt;telnet, rlogin, rsh&lt;/code&gt;, and &lt;code&gt;ftp&lt;/code&gt; is&#xD;
  that they are not secure. Anyone who is monitoring the packets sent by your&#xD;
  computer across the network will see everything you're doing, since it's all&#xD;
  unencrypted. This may seem far-fetched, but it is relatively easy to monitor&#xD;
  all traffic in a local network. &lt;/p&gt;&#xD;
&lt;p&gt;Still, you may object that you're not doing anything top-secret, so you don't&#xD;
  mind if anyone's watching. The problem is that in addition to the work you're&#xD;
  doing, &lt;strong&gt;your password is sent unencrypted across the network&lt;/strong&gt;.&#xD;
  That's the biggest reason for prefering a secure connection. &lt;/p&gt;&#xD;
&lt;p&gt;So, rather than use &lt;code&gt;telnet, rlogin,&lt;/code&gt; or &lt;code&gt;rsh&lt;/code&gt;, you&#xD;
  should use &lt;code&gt;ssh&lt;/code&gt;, which stands for "secure shell". All communication&#xD;
  is encrypted using &lt;code&gt;ssh&lt;/code&gt;. This may make logging-in a tad slower,&#xD;
  but will be unnoticeable once you're logged in. &lt;/p&gt;&#xD;
&lt;p&gt;If you're connecting from a unix machine, it probably has &lt;code&gt;ssh&lt;/code&gt; available&#xD;
already. Just type &lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;ssh username@hostname.edu&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;  Note that &lt;code&gt;ssh&lt;/code&gt; won't ask you for your username like &lt;code&gt;telnet&lt;/code&gt; does,&#xD;
      so you need to specify it in your command. Also notice that this won't&#xD;
    look just like your email address, since your email address doesn't really&#xD;
    give the name of a specific computer. For example, if I wanted to log in&#xD;
    to &lt;code&gt;castle&lt;/code&gt;,&#xD;
  I'd have to use: &lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;ssh myname@castle.isye.gatech.edu&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;  not my email address: &lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;ssh myname@isye.gatech.edu&lt;/code&gt; &lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;If you have a fast connection (not dial-up) and want to run some graphical&#xD;
  jobs on the remote machine and have them show up on your local machine, use&#xD;
  the &lt;code&gt;-X&lt;/code&gt; option (capital X): &lt;code&gt;ssh -X myname@host&lt;/code&gt;. This&#xD;
  is called X forwarding. &lt;/p&gt;&#xD;
&lt;p&gt;If you're connecting from a PC, then &lt;code&gt;ssh&lt;/code&gt; probably isn't present&#xD;
  by default. Most Georgia Tech PCs have a program called &lt;a href="index.php?x=&amp;mod_id=2&amp;root=35&amp;id=45"&gt;SecureCRT&lt;/a&gt;, however,&#xD;
  which implements the &lt;code&gt;ssh&lt;/code&gt; protocol. Just use &lt;a href="index.php?x=&amp;mod_id=2&amp;root=35&amp;id=45"&gt;SecureCRT&lt;/a&gt; instead&#xD;
  of whatever you used to use. &lt;/p&gt;&#xD;
&lt;h2&gt;Transferring Files&lt;/h2&gt;&#xD;
&lt;p&gt;For transferring files, there are two secure facilities: &lt;code&gt;scp&lt;/code&gt; and &lt;code&gt;sftp&lt;/code&gt;.&#xD;
  They stand for ``secure copy'' and ``secure ftp''. &lt;code&gt;scp&lt;/code&gt; will only&#xD;
do one file at a time so you have to enter your password each time: &lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;scp localfile myname@host.edu:path/to/directory/newname&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;  or &lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;scp myname@host.edu:path/to/directory/remotefile local/dir/newname&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;  Of course, you can leave the new name out if you want. Check the man page&#xD;
  for more info. If you're used to &lt;code&gt;ftp&lt;/code&gt;, it may just be easiest to&#xD;
  use &lt;code&gt;sftp&lt;/code&gt;,&#xD;
  which works very similarly. &lt;/p&gt;&#xD;
&lt;h2&gt;Final Advice&lt;/h2&gt;&#xD;
&lt;p&gt;In order to use any of these secure protocols, computers on both ends of the&#xD;
  connection must support them. If one of them does not, you're just going to&#xD;
  have to revert to unencrypted methods. However, I'd contact the administrator&#xD;
  of the uncooperative computer and let them know that you'd like &lt;code&gt;ssh&lt;/code&gt; support&#xD;
  added. &lt;/p&gt;&#xD;
&lt;p&gt;Good luck, and be glad that you're now using encrypted communication. &lt;/p&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/54</link><pubDate>Thu, 20 Sep 2012 15:18:01 GMT</pubDate><guid isPermaLink="false">dbd22469501ae5e17214c2c26e939cda</guid></item><item><title>Feeling Comfortable with the Command Line</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
Do you have any tips relating to feeling comfortable with using UNIX?&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;p&gt;If you're not already comfortable using the unix command line, this should&#xD;
  be your first goal. As in any other environment, comfort will take time, but&#xD;
  here are some of the basic tasks that you will want to become familiar with:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;changing directories (&lt;code&gt;cd&lt;/code&gt;)&lt;/li&gt;&#xD;
  &lt;li&gt;creating, moving, and removing directories (&lt;code&gt;mkdir, mv, rmdir&lt;/code&gt;)&lt;/li&gt;&#xD;
  &lt;li&gt;listing the contents of a directory (&lt;code&gt;ls&lt;/code&gt;)&lt;/li&gt;&#xD;
  &lt;li&gt;copying, moving, and removing files (&lt;code&gt;cp, mv, rm&lt;/code&gt;)&lt;/li&gt;&#xD;
  &lt;li&gt;running programs&lt;/li&gt;&#xD;
  &lt;li&gt;reading manual pages (&lt;code&gt;man&lt;/code&gt;)&lt;/li&gt;&#xD;
  &lt;li&gt;editing text files &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt; If you're using a graphical user interface, you may be able to perform some&#xD;
  of these tasks using graphical tools, but I recommend that you learn how to&#xD;
  do them from the command line as well. Otherwise you may find yourself at a&#xD;
  disadvantage if you ever log in from a PC or a remote location.&lt;/p&gt;&#xD;
&lt;p&gt;You can learn all of the above commands and more from these online tutorials on unix:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&lt;a href="http://www.ee.surrey.ac.uk/Teaching/Unix/" target="_blank"&gt;UNIX Tutorial for Beginners&lt;/a&gt;&lt;/li&gt;&#xD;
  &lt;li&gt;&lt;a href="http://www.isu.edu/departments/comcom/unix/workshop/unixindex.html" target="_blank"&gt;A Basic UNIX Tutorial&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/46</link><pubDate>Thu, 20 Sep 2012 15:17:34 GMT</pubDate><guid isPermaLink="false">4a587e999485cbf17c984a7742a44d87</guid></item><item><title>How to Run Long Jobs on the UNIX Systems</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
I need to run a long job on one of the UNIX systems. What do I need to know to do this most efficiently?&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&#xD;
    &lt;p&gt;Often there is a requirement to run jobs that so long to run that sitting&#xD;
      in front of the terminal waiting for the results is not practical. This&#xD;
      document is intended to help users run large jobs in the "background" in&#xD;
      such a way as to not negatively impact other users on the computers.&lt;/p&gt;&#xD;
    &lt;p&gt; Most users in ISyE run the Korn Shell, thus this document assumes such&#xD;
      use. There are a few steps to the process of running large/long jobs. &lt;/p&gt;&#xD;
    &lt;ul&gt;&#xD;
  &lt;li&gt;Starting the job in the "Background" so that it will continue to run after&#xD;
    the user logs off of the computer. &lt;/li&gt;&#xD;
  &lt;li&gt; Setting the running priority so the job will not negatively impact other&#xD;
    users "interactive" use of the same computer.&lt;/li&gt;&#xD;
  &lt;li&gt; Monitoring the job to make sure it is running properly and is not out&#xD;
    of control. &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
    &lt;p&gt; The text below uses examples based on the execution of a job named &lt;span class="response"&gt;myprog&lt;/span&gt; which&#xD;
      requires an argument of &lt;span class="response"&gt;myargs&lt;/span&gt;. &lt;span class="response"&gt;myprog&lt;/span&gt; can&#xD;
      be any program or script and &lt;span class="response"&gt;myargs&lt;/span&gt; can be&#xD;
      any argument or list of arguments. &lt;/p&gt;&#xD;
    &lt;h2&gt;Running in the Background&lt;/h2&gt;&#xD;
    &lt;p&gt; There are three standard ways to put a job into the Background.&lt;/p&gt;&#xD;
    &lt;ul&gt;&#xD;
  &lt;li&gt; Use of the &lt;code&gt;nohup&lt;/code&gt; command&lt;/li&gt;&#xD;
  &lt;li&gt;Use of the &lt;code&gt;bg&lt;/code&gt; command&lt;/li&gt;&#xD;
  &lt;li&gt; Use of an &lt;code&gt;&amp;&lt;/code&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
    &lt;h3&gt; Using nohup&lt;/h3&gt;&#xD;
    &lt;p&gt;The &lt;code&gt;nohup&lt;/code&gt; command is the preferred method for running a job&#xD;
      in the background on any UNIX system. It is the best method for allowing&#xD;
      the job to continue running in the background even after the user logs&#xD;
      off of the system. &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt; Usage: &lt;code&gt;nohup myprog myargs&amp;&lt;/code&gt; &lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; The &lt;code&gt;nohup&lt;/code&gt; command will then execute the program in the "background" and&#xD;
      return the user to a normal command prompt. This allows the user to log&#xD;
      off of the computer without having the job terminate. &lt;/p&gt;&#xD;
    &lt;p&gt; The &lt;code&gt;nohup&lt;/code&gt; command will trap any output to &lt;span class="response"&gt;&lt;code&gt;STDOUT&lt;/code&gt;&lt;/span&gt; (usually&#xD;
      what would display to the screen) and save it in a file called &lt;span class="response"&gt;&lt;code&gt;nohup.out&lt;/code&gt;&lt;/span&gt; which&#xD;
      will be located in the directory in which the command was executed.&lt;/p&gt;&#xD;
    &lt;p&gt; On the Korn Shell, when the user runs the &lt;code&gt;exit&lt;/code&gt; command to&#xD;
      log off, the following warning message will be displayed: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt; &lt;span class="response"&gt;You have jobs running&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; Typing exit a second time will successfully log off the user. Despite&#xD;
      the warning message, the nohuped job will continue to run. Look at the&#xD;
      manual pages for nohup for more information(&lt;code&gt;man nohup&lt;/code&gt;). &lt;/p&gt;&#xD;
    &lt;p&gt; Under some circumstances nohup can act a bit odd and hang ssh (secure&#xD;
      shell) connections when exiting or will allow the job to be killed when&#xD;
      the user logs out. If you experience this problem, the work around is to "double&#xD;
      nohup" the job.... &lt;/p&gt;&#xD;
    &lt;p&gt; Create a script (here I name it &lt;code&gt;myscript&lt;/code&gt;) that will run&#xD;
      the job. It should contain something like:&lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt; &lt;code&gt;#!/bin/ksh &lt;br&gt;&#xD;
    nohup myprog myargs&amp; &lt;/code&gt;&lt;/p&gt;&#xD;
  &lt;p&gt; &lt;code&gt;chmod +x myscript&lt;/code&gt; to make the script executable&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; Then run the script: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt; nohup myscript&amp;&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; Then log out. &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;exit&lt;/code&gt; &lt;br&gt;&#xD;
        &lt;code&gt;exit&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;h3&gt; Using bg &lt;/h3&gt;&#xD;
    &lt;p&gt; Jobs can be placed in the background by running them interactively: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;myprog myargs&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; Then halting the program with a CNTRL-Z ^Z and then executing the "bg" command &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
      &lt;p&gt; &lt;code&gt;bg&lt;/code&gt; &lt;/p&gt;&#xD;
    &lt;/blockquote&gt;&#xD;
  &lt;p&gt; Which takes that last halted program and starts it running again, but&#xD;
      now in the background. &lt;/p&gt;&#xD;
    &lt;p&gt; This does NOT allow the user to log out, and thus should never be used&#xD;
      for running Long jobs, use nohup in such circumstances. For more information&#xD;
      on "bg" see the manual pages &lt;code&gt;man bg &lt;/code&gt;for information on how&#xD;
      to take a background process and make it once again the forground process,&#xD;
      see the manual pages for the "fg" command. &lt;/p&gt;&#xD;
  &lt;h3&gt; Using &amp;&lt;/h3&gt;&#xD;
&lt;p&gt; Jobs can be pushed directly into the background as follows: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
      &lt;p&gt; &lt;code&gt;myprog myargs&amp;&lt;/code&gt; &lt;/p&gt;&#xD;
    &lt;/blockquote&gt;&#xD;
  &lt;p&gt; The end result is identical to using cntrl-Z followed by the &lt;code&gt;bg&lt;/code&gt; command.&#xD;
      This does NOT allow the user to log out and thus should never be used&#xD;
      for running long jobs. Use nohup in such circumstances. &lt;/p&gt;&#xD;
&lt;h2&gt; Setting Job Execution Priorities&lt;/h2&gt;&#xD;
    &lt;p&gt; Any jobs run in the background for an extended period of time (anything&#xD;
      over twenty minutes as a guideline) must have their run priority changed&#xD;
      to avoid causing other users problems. &lt;/p&gt;&#xD;
    &lt;p&gt; The &lt;code&gt;renice&lt;/code&gt; command is used to set the priority for a process.&lt;/p&gt;&#xD;
  &lt;p&gt; First, the process ID number must be found: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt; &lt;code&gt;ps -e|grep myprog&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; Will give output such as: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p class="response"&gt; 23452 pts/9 0:00 myprog &lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt;where 23452 (in this example) is the process ID number. The job can be "niced" with: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt; &lt;code&gt;renice 10 23452 &lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; A nice value of 10 is typical for a background process. It will allow&#xD;
      Interactive users to function properly while still giving a large portion&#xD;
      of the CPU compute cycles to myprog. &lt;/p&gt;&#xD;
    &lt;p&gt; Any background jobs not run at a nice value of 10 or higher on general&#xD;
      access ISyE UNIX machines are subject to termination when a complaint is&#xD;
      received. So, it is very important to use the &lt;code&gt;nice&lt;/code&gt; command. It is the nice&#xD;
      thing to do; hence it's name. &lt;/p&gt;&#xD;
&lt;p&gt; For more information on nicing programs see the manual pages (man) for &lt;code&gt;nice&lt;/code&gt; and &lt;code&gt;renice&lt;/code&gt;. &lt;/p&gt;&#xD;
    &lt;h2&gt; Monitoring a Background Job&lt;/h2&gt;&#xD;
    &lt;p&gt; The easiest way to keep an eye on a background process is with the &lt;code&gt;top&lt;/code&gt; command.&#xD;
      The output looks like the following:&lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt; &lt;code&gt;$ top &lt;/code&gt;&lt;/p&gt;&#xD;
  &lt;p class="response"&gt; last pid: 25120; load averages: 2.53, 1.92, 1.43 &lt;br&gt;&#xD;
        16:40:48 &lt;br&gt;&#xD;
        59 processes: 56 sleeping, 2 running, 1 on cpu &lt;br&gt;&#xD;
        CPU states: 0.0% idle, 99.8% user, 0.2% kernel, 0.0% iowait, 0.0% swap &lt;br&gt;&#xD;
        Memory: 512M real, 200M free, 49M swap in use, 1347M swap free&lt;br&gt;&#xD;
        &lt;br&gt;&#xD;
        PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND &lt;br&gt;&#xD;
        23452 myuser 1 40 10 2008K 1608K run 108:10 74.08% myprog &lt;br&gt;&#xD;
        25079 root 1 30 0 2256K 1640K run 0:02 10.29% patchadd &lt;br&gt;&#xD;
        25009 root 1 58 0 2816K 2064K cpu 0:00 0.57% top &lt;br&gt;&#xD;
        24993 root 1 48 0 312K 312K sleep 0:00 0.04% sh &lt;br&gt;&#xD;
        23336 myuser 8 59 0 8968K 7560K sleep 0:01 0.02% dtwm &lt;br&gt;&#xD;
        24991 root 1 38 0 1784K 1296K sleep 0:00 0.02% in.rlogind &lt;br&gt;&#xD;
        178 root 1 48 0 2184K 1624K sleep 0:00 0.00% inetd &lt;br&gt;&#xD;
        203 root 1 59 0 4680K 2920K sleep 12:26 0.00% egd.pl &lt;br&gt;&#xD;
        188 root 5 58 0 3624K 2568K sleep 2:06 0.00% automountd &lt;br&gt;&#xD;
        229 root 1 48 0 1696K 816K sleep 1:37 0.00% prngd &lt;br&gt;&#xD;
        248 root 1 58 0 2688K 1352K sleep 1:24 0.00% sshd &lt;br&gt;&#xD;
        224 root 10 53 0 3832K 3368K sleep 0:10 0.00% nscd &lt;br&gt;&#xD;
        23006 root 1 59 0 125M 30M sleep 0:04 0.00% Xsun &lt;br&gt;&#xD;
        199 root 9 58 0 4288K 2280K sleep 0:01 0.00% syslogd &lt;br&gt;&#xD;
        1 root 1 58 0 816K 384K sleep 0:01 0.00% init &lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; Notice that PID 23452 is myprog, running with a nice value of 10, accumulating&#xD;
      74% of the CPU time (since there are no other users on the system, the&#xD;
      percentage if very high, it would be more evenly split if another user&#xD;
      was on the machine). Myprog is using 2008K or 2 megabytes of memory. &lt;/p&gt;&#xD;
    &lt;p&gt; The important things to look for are: that the runtime is in the range&#xD;
      of what you expect (to make sure the job is not hung, or not working correctly).&#xD;
      that the memory use of the program is reasonable and what you expect and&#xD;
      that the amount of memory available on the system is much less than the&#xD;
      maximum amount your program will require. &lt;/p&gt;&#xD;
    &lt;p&gt; On the Memory: line, the first number is the real memory size of the&#xD;
      machine and will not change. The second number is the amount of this "real" memory&#xD;
      that is free or available to new or growing programs. If this amount is&#xD;
      much less than what your program will need, then it should be run on a&#xD;
      different computer.&lt;/p&gt;&#xD;
    &lt;p&gt; The third line is the amount of Hard Disk space that is being used as&#xD;
      though it were real memory. If this number is comparable to the amount&#xD;
      of real memory (it is not in this case as 49M is much less than 512M),&#xD;
      then the computer is over-laden with large jobs and another system should&#xD;
      be used instead. Finally the last number is the amount of Hard Disk space&#xD;
      that is allocated to be used as memory, but is not actively in use by the&#xD;
      system. &lt;/p&gt;&#xD;
    &lt;p&gt; The one critical factor is that the user must know the approximate amount&#xD;
      of memory that their job will require. Then, this must be compared to the "free&#xD;
      memory" plus the "swap free" number (the last number on the Memory: line). &lt;/p&gt;&#xD;
    &lt;p&gt; If the amount of memory needed is more than ~70% of the sum of the fee&#xD;
      swap and free memory, then the job should not be run on the given system.&#xD;
      For this machine the calculation is: &lt;/p&gt;&#xD;
    &lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;span class="response"&gt; 200MB + 1347MB = 1547MB 1547MB * 0.7 = 1082.9MB &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
    &lt;p&gt; If a job will require more that 1000MB or 1GB, then the system above&#xD;
      would be a poor choice. Keep in mind that the machine runs 100 times Slower&#xD;
      when using the Swap (or Hard Disk) for memory. To get decent performance&#xD;
      from the computer system, then the active memory required by the job should&#xD;
      be no more than 120% of the free memory amount. In this case 240MB. &lt;/p&gt;&#xD;
    </description><link>http://www.isye.gatech.edu/helpdesk/kb/article/55</link><pubDate>Thu, 20 Sep 2012 15:16:46 GMT</pubDate><guid isPermaLink="false">4b381a36b506ef26b1354428f82ae00d</guid></item><item><title>Matlab - running in the background.</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
How do I run Matlab in the background on UNIX machines so my job will run after I log out?&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
This is possible for any job that does not require a Window to be opened (no plots to the screen etc).&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
nohup matlab -nojvm -nodisplay &lt; myprog.m &gt;&amp; myprog.log &amp;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
nohup is a generic UNIX program for running any job in the background such that the job will not terminate when the user logs out.&lt;br /&gt;&#xD;
Without nohup, the job might run in the background just fine, but could terminate as soon as the user logs out.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
-nojvm tells Matlab not to use Java Virtual Machine, which it uses to spawn windows&lt;br /&gt;&#xD;
-nodisplay tells Matlab not to attempt to open the GUI desktop&lt;br /&gt;&#xD;
&lt; myprog.m    feeds Matlab the program to run&lt;br /&gt;&#xD;
&gt;&amp;myprog.log  tells the system to write any text output by Matlab and any error messages to the file myprog.log&lt;br /&gt;&#xD;
&amp;             tells the operating system to run the job in the background&lt;br /&gt;&#xD;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/90</link><pubDate>Thu, 20 Sep 2012 15:15:46 GMT</pubDate><guid isPermaLink="false">ff1a5bc55c5ca7e7931b6389ca072b78</guid></item><item><title>Determining hardware and OS info on Unix servers.</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
Users often need to know hardware and OS specs for Unix machines.  Common needs include determining which version of software to run, documenting hardware used for computations in papers, and comparing servers to determine which is likely to run a compute job faster.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
GT ISyE runs Sun Solaris and Red Hat Linux in both its commercial and free versions -- Red Hat Enterprise Linux (RHEL) and Fedora.  However there is a wide mix of versions and hardware that can be confusing for users.&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
To determine hardware and OS info on Linux:&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
"uname -a" will show kernel version and hardware platform.&lt;br /&gt;&#xD;
"cat /etc/issue" will show the distribution and version.&lt;br /&gt;&#xD;
"cat /proc/cpuinfo" will show processor information.&lt;br /&gt;&#xD;
"free" will show physical RAM.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
To determine this info on Solaris:&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
"uname -a" will print the OS version and hardware platform.&lt;br /&gt;&#xD;
"isainfo -v" will show platform type and whether it's 32-bit or 64-bit.&lt;br /&gt;&#xD;
"psrinfo -v" will show processor information.&lt;br /&gt;&#xD;
"top" will show physical RAM (along with a good bit of process information).&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Linux examples:&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
wren:~ $ uname -a&lt;br /&gt;&#xD;
Linux wren 2.6.18-8.1.8.el5 #1 SMP Mon Jun 25 17:06:07 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
This shows Linux kernel 2.6.18 running on a 64-bit x86 processor.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
wren:~ $ free&lt;br /&gt;&#xD;
             total       used       free     shared    buffers     cached&lt;br /&gt;&#xD;
Mem:       8178540     983992    7194548          0     147216     144348&lt;br /&gt;&#xD;
-/+ buffers/cache:     692428    7486112&lt;br /&gt;&#xD;
Swap:      4194296     615092    3579204&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
The "total" column indicates the machine has 8GB physical RAM and 4GB swap space.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Solaris examples:&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
castle:~ $ uname -a&lt;br /&gt;&#xD;
SunOS castle 5.9 Generic_118558-06 sun4u sparc SUNW,Ultra-4&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
Solaris 9 is listed as SunOS 5.9, Solaris 10 is SunOS 5.10, etc.&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
So Castle is a Solaris 9 server running on the UltraSparc platform, but this doesn't show whether the machine can run 64-bit code.  To find out, do:&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
castle:~ $ isainfo -v&lt;br /&gt;&#xD;
64-bit sparcv9 applications&lt;br /&gt;&#xD;
32-bit sparc applications&lt;br /&gt;&#xD;
</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/93</link><pubDate>Thu, 20 Sep 2012 15:14:43 GMT</pubDate><guid isPermaLink="false">2fdcf934267b2125260fe99062e5fd3e</guid></item><item><title>Password Protecting an Area of your Web Site</title><description>&lt;h3&gt;Problem: &lt;/h3&gt;&#xD;
How can I password protect an area of my website?&#xD;
&lt;br&gt;&#xD;
&lt;br&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;br&gt;&#xD;
&lt;h3&gt;Solution: &lt;/h3&gt;&#xD;
&lt;h2&gt;Create an .htaccess File &lt;/h2&gt;&#xD;
&lt;p&gt;An &lt;strong&gt;.htaccess&lt;/strong&gt; file must be created in the directory that the user wants&#xD;
  to secure. (Multiple directories can have &lt;strong&gt;.htaccess&lt;/strong&gt; files, but there&#xD;
can only be one &lt;strong&gt;.htaccess&lt;/strong&gt; file per directory.)&lt;/p&gt;&#xD;
&lt;p class="note"&gt;&lt;strong&gt;Important:&lt;/strong&gt;Access restriction applies to a certain directory, not a&#xD;
  certain file or HTML document. Documents that are to be restricted should be&#xD;
  put in directories separate from those you want unrestricted.&lt;/p&gt;&#xD;
&lt;p&gt;While in the directory you want to secure, create/edit a file called &lt;strong&gt;.htaccess&lt;/strong&gt; using&#xD;
your favorite text editor.&lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;code&gt;&#xD;
  AuthUserFile /www/users/andyh/private/.htpasswd (path to .htpasswd&#xD;
      file) &lt;br&gt;&#xD;
    AuthGroupFile /dev/null (path to .htgroup&#xD;
      file)&lt;br&gt;&#xD;
    AuthName "Secure Area" (title for dialog box) &lt;br&gt;&#xD;
    AuthType Basic &lt;br&gt;&#xD;
  require valid-user&lt;br&gt;&#xD;
  &lt;/code&gt;&#xD;
&lt;/blockquote&gt;&#xD;
(&lt;a href="#access"&gt;Access alternatives&lt;/a&gt;)&#xD;
&lt;h2&gt;Create an encrypted password &lt;/h2&gt;&#xD;
&lt;p&gt;The &lt;strong&gt;.htpasswd&lt;/strong&gt; file should contain a list of usernames and passwords.&#xD;
  The format of the password file is straightforward, one line per user, with&#xD;
  the line containing the user name, followed by a colon, followed by the user's&#xD;
password encrypted with the standard Unix password encryption.&lt;/p&gt;&#xD;
&lt;p&gt;In other words, an &lt;i&gt;.htpasswd&lt;/i&gt; can look like this:&lt;/p&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;p&gt;&lt;code&gt;testuser1:jKXVnZH6eXR7&lt;br&gt;&#xD;
  testuser2:taeWr6tbTZKO6&lt;/code&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;with one line for each user.&lt;/p&gt;&#xD;
&lt;p&gt;To generate an encrypted password, visit &lt;a href="https://www.isye.gatech.edu/intranet/modules/encrypt/"&gt;https://www.isye.gatech.edu/intranet/modules/encrypt/&lt;/a&gt;&lt;br&gt;&#xD;
  - Type in a username and password to use. &lt;br&gt;&#xD;
  - Copy the DES encrypted password into your .htpasswd file &lt;br&gt;&#xD;
  - For additional users, use the form again and add a line for that user to&#xD;
  the .htpasswd file. &lt;br&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;h2&gt;Check File Permissions  &lt;/h2&gt;&#xD;
&lt;p&gt;Make sure both the .htpasswd and .htaccess files are readable by the web&#xD;
  server (chmod og+r .htaccess .htpasswd)&lt;/p&gt;&#xD;
&lt;h2&gt;Additional Sources of Information &lt;/h2&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;Apache HTTP documentation (&lt;a href="http://httpd.apache.org/docs/howto/auth.html"&gt;http://httpd.apache.org/docs/howto/auth.html&lt;/a&gt;)&lt;/li&gt;&#xD;
  &lt;li&gt;ApacheWeek article (&lt;a href="http://www.apacheweek.com/features/userauth"&gt;http://www.apacheweek.com/features/userauth&lt;/a&gt;) &lt;/li&gt;&#xD;
  &lt;li&gt;Zend article (&lt;a href="http://www.zend.com/zend/trick/tricks-august-2001.php"&gt;http://www.zend.com/zend/trick/tricks-august-2001.php&lt;/a&gt;) &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;hr&gt;&#xD;
&lt;h3&gt;&lt;a name="access"&gt;&lt;/a&gt;The "Limit" Statement&lt;/h3&gt;&#xD;
&lt;!--#include virtual="/cts/body.html" --&gt;&#xD;
&lt;p&gt;The set of instructions that are placed between the &lt;i&gt;&lt;limit get&gt;&lt;/i&gt; and &lt;i&gt;&lt;/Limit&gt;&lt;/i&gt; statements&#xD;
  determine how the directory can be accessed.&lt;/p&gt;&#xD;
&lt;p&gt;Here are some example situations that require different sets of instructions:&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
  &lt;li&gt;&#xD;
    &lt;p&gt;Allow access to a &lt;strong&gt;single user: &lt;/strong&gt;&lt;code&gt;require user [username]&lt;/code&gt; where username&#xD;
      is an entry in the &lt;strong&gt;.htpasswd&lt;/strong&gt; file.&#xD;
&#xD;
  &lt;li&gt;Allow access to a &lt;strong&gt;group of people&lt;/strong&gt;: &lt;code&gt;require&#xD;
      group [groupname]&lt;/code&gt; where groupname is the name of a group in the &lt;strong&gt;.htgroup&lt;/strong&gt; file.&#xD;
      &lt;p&gt;&lt;/p&gt;&#xD;
  &lt;li&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;strong&gt;llow&lt;/strong&gt; access to any user inside a &lt;strong&gt;certain&#xD;
        domain&lt;/strong&gt;: &#xD;
        &lt;blockquote&gt;&lt;code&gt;order deny,allow&lt;br&gt;&#xD;
      deny from all&lt;br&gt;&#xD;
      allow from [domain name] &lt;/code&gt;&lt;/blockquote&gt;&#xD;
    where domain name is the name of the domain to allow&#xD;
    access to (e.g. isye.gatech.edu)&#xD;
    &lt;p&gt;&lt;/p&gt;&#xD;
  &lt;li&gt;&lt;strong&gt;D&lt;/strong&gt;&lt;strong&gt;eny&lt;/strong&gt; access to any user inside a &lt;strong&gt;certain&#xD;
      domain: &lt;/strong&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;blockquote&gt;&#xD;
  &lt;blockquote&gt;&#xD;
    &lt;p&gt;&lt;code&gt;order allow,deny&lt;br&gt;&#xD;
        allow from all&lt;br&gt;&#xD;
        deny from [domain name]&lt;/code&gt;&lt;/p&gt;&#xD;
  &lt;/blockquote&gt;&#xD;
  &lt;p&gt;where domain name is the intended&#xD;
          domain name to deny access to. &lt;/p&gt;&#xD;
&lt;/blockquote&gt;</description><link>http://www.isye.gatech.edu/helpdesk/kb/article/52</link><pubDate>Thu, 19 Jan 2012 20:50:34 GMT</pubDate><guid isPermaLink="false">893add1a8cf46cf3f8ebd967b4dd0bab</guid></item></channel></rss>
