<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/umiacs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mbaney</id>
	<title>UMIACS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/umiacs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mbaney"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php/Special:Contributions/Mbaney"/>
	<updated>2026-10-01T21:11:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13427</id>
		<title>MonthlyMaintenanceWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13427"/>
		<updated>2026-10-01T18:40:16Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HelpDesk | UMIACS staff]] takes a monthly maintenance window to patch and reboot all UMIACS-supported hosts and services.  This provides a way for staff to ensure security updates are installed and applied on the numerous different platforms and appliances that UMIACS runs.&lt;br /&gt;
&lt;br /&gt;
The window for each month is calculated by adding 9 days to [https://en.wikipedia.org/wiki/Patch_Tuesday Microsoft&#039;s Patch Tuesday] to allow for enough time to marshal patches released that month from Microsoft, Red Hat, Apple, and other OS and application vendors and have enough time to get systems prepared to reboot.  This translates to the window being on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month.  The window lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Nexus]] will always have a reservation in place from 4:45pm-8pm on the day of the upcoming window to prevent jobs from being scheduled on compute nodes. The 15-minute addition before the start of the window is to allow jobs to fully end. Any job submitted before the reservation begins that has a time limit that would run into the reservation will be held until at least the end of the reservation - 8pm on the day of the window. This is to prevent issues with jobs failing to end properly causing delays in work we have scheduled during the window.&lt;br /&gt;
&lt;br /&gt;
A list of upcoming maintenance windows is as follows, with the next one in bold. Again, the window is on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month, and lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;October 9th-13th (datacenter, including Nexus, due to cooling outage)&#039;&#039;&#039; and &#039;&#039;&#039;October 22nd 2026 (non-datacenter)&#039;&#039;&#039;&lt;br /&gt;
* November 19th 2026&lt;br /&gt;
* December 17th 2026&lt;br /&gt;
&lt;br /&gt;
==Archives==&lt;br /&gt;
* January 17th 2013 - BEGIN time of 8pm-12am for this window through February 20th 2020&lt;br /&gt;
* February 21st 2013&lt;br /&gt;
* March 21st 2013&lt;br /&gt;
* April 18th 2013&lt;br /&gt;
* May 23rd 2013&lt;br /&gt;
* June 20th 2013&lt;br /&gt;
* July 18th 2013&lt;br /&gt;
* August 22nd 2013&lt;br /&gt;
* September 19th 2013&lt;br /&gt;
* October 17th 2013&lt;br /&gt;
* December 19th 2013&lt;br /&gt;
* January 23rd 2014&lt;br /&gt;
* February 20th 2014&lt;br /&gt;
* March 20th 2014&lt;br /&gt;
* April 17th 2014&lt;br /&gt;
* May 22nd 2014&lt;br /&gt;
* June 19th 2014&lt;br /&gt;
* July 17th 2014&lt;br /&gt;
* August 21st 2014&lt;br /&gt;
* September 18th 2014&lt;br /&gt;
* October 23rd 2014&lt;br /&gt;
* November 20th 2014&lt;br /&gt;
* December 18th 2014&lt;br /&gt;
* January 22nd 2015&lt;br /&gt;
* February 19th 2015&lt;br /&gt;
* March 19th 2015&lt;br /&gt;
* May 21st 2015&lt;br /&gt;
* June 18th 2015&lt;br /&gt;
* July 23rd 2015&lt;br /&gt;
* August 20th 2015&lt;br /&gt;
* September 17th 2015&lt;br /&gt;
* October 22nd 2015&lt;br /&gt;
* November 19th 2015&lt;br /&gt;
* December 17th 2015&lt;br /&gt;
* January 21st 2016&lt;br /&gt;
* February 18th 2016&lt;br /&gt;
* March 12th 2016 (Adjusted date for AVW power outage)&lt;br /&gt;
* April 21st 2016&lt;br /&gt;
* May 19th 2016&lt;br /&gt;
* June 23rd 2016&lt;br /&gt;
* July 21st 2016&lt;br /&gt;
* August 18th 2016&lt;br /&gt;
* September 22nd 2016&lt;br /&gt;
* October 20th 2016&lt;br /&gt;
* November 17th 2016&lt;br /&gt;
* December 22nd 2016&lt;br /&gt;
* January 19th 2017&lt;br /&gt;
* February 23rd 2017&lt;br /&gt;
* March 23rd 2017&lt;br /&gt;
* April 20th 2017&lt;br /&gt;
* May 18th 2017&lt;br /&gt;
* June 22nd 2017&lt;br /&gt;
* July 20th 2017&lt;br /&gt;
* August 17th 2017&lt;br /&gt;
* September 21st 2017&lt;br /&gt;
* October 19th 2017&lt;br /&gt;
* December 21st 2017&lt;br /&gt;
* January 18th 2018&lt;br /&gt;
* February 22nd 2018&lt;br /&gt;
* March 22nd 2018&lt;br /&gt;
* April 19th 2018&lt;br /&gt;
* May 17th 2018&lt;br /&gt;
* June 21st 2018&lt;br /&gt;
* July 19th 2018&lt;br /&gt;
* August 23rd 2018&lt;br /&gt;
* September 20th 2018&lt;br /&gt;
* October 18th 2018&lt;br /&gt;
* December 20th 2018&lt;br /&gt;
* January 24th 2019&lt;br /&gt;
* February 21st 2019&lt;br /&gt;
* April 18th 2019&lt;br /&gt;
* May 23rd 2019&lt;br /&gt;
* June 20th 2019&lt;br /&gt;
* July 18th 2019&lt;br /&gt;
* August 22nd 2019&lt;br /&gt;
* September 19th 2019&lt;br /&gt;
* October 17th 2019&lt;br /&gt;
* November 21st 2019&lt;br /&gt;
* December 19th 2019&lt;br /&gt;
* January 23rd 2020&lt;br /&gt;
* February 20th 2020&lt;br /&gt;
* April 23rd 2020 - BEGIN time of 5pm-7pm for this window through August 19th 2021&lt;br /&gt;
* June 18th 2020&lt;br /&gt;
* July 23rd 2020&lt;br /&gt;
* August 20th 2020&lt;br /&gt;
* September 17th 2020&lt;br /&gt;
* October 22nd 2020&lt;br /&gt;
* November 19th 2020&lt;br /&gt;
* December 17th 2020&lt;br /&gt;
* January 21st 2021&lt;br /&gt;
* February 18th 2021&lt;br /&gt;
* March 25th 2021 (Adjusted date for extended Spring Break)&lt;br /&gt;
* April 22nd 2021&lt;br /&gt;
* May 20th 2021&lt;br /&gt;
* June 17th 2021&lt;br /&gt;
* July 22nd 2021&lt;br /&gt;
* August 19th 2021&lt;br /&gt;
* September 23rd 2021 - BEGIN time of 5pm-8pm for this window and all others below&lt;br /&gt;
* October 21st 2021&lt;br /&gt;
* November 18th 2021&lt;br /&gt;
* January 20th 2022&lt;br /&gt;
* February 17th 2022&lt;br /&gt;
* March 24th 2022 (Adjusted date for Spring Break)&lt;br /&gt;
* April 21st 2022&lt;br /&gt;
* May 19th 2022&lt;br /&gt;
* June 23rd 2022&lt;br /&gt;
* July 21st 2022&lt;br /&gt;
* August 18th 2022&lt;br /&gt;
* September 22nd 2022&lt;br /&gt;
* October 20th 2022&lt;br /&gt;
* November 17th 2022&lt;br /&gt;
* January 19th 2023&lt;br /&gt;
* February 23rd 2023&lt;br /&gt;
* April 20th 2023&lt;br /&gt;
* May 18th 2023&lt;br /&gt;
* June 22nd 2023&lt;br /&gt;
* July 20th 2023&lt;br /&gt;
* August 17th 2023&lt;br /&gt;
* September 21st 2023&lt;br /&gt;
* October 19th 2023&lt;br /&gt;
* December 20th 2023 (Adjusted date for early Winter Break)&lt;br /&gt;
* January 18th 2024&lt;br /&gt;
* February 22nd 2024&lt;br /&gt;
* March 21st 2024&lt;br /&gt;
* April 18th 2024&lt;br /&gt;
* May 23th 2024&lt;br /&gt;
* June 20th 2024&lt;br /&gt;
* July 18th 2024&lt;br /&gt;
* August 22nd 2024&lt;br /&gt;
* September 19th 2024&lt;br /&gt;
* October 17th 2024&lt;br /&gt;
* November 21st 2024&lt;br /&gt;
* December 19th 2024&lt;br /&gt;
* January 23rd 2025&lt;br /&gt;
* February 20th 2025&lt;br /&gt;
* March 20th 2025&lt;br /&gt;
* April 17th 2025&lt;br /&gt;
* May 22nd 2025&lt;br /&gt;
* June 19th 2025&lt;br /&gt;
* July 17th 2025&lt;br /&gt;
* August 21st 2025&lt;br /&gt;
* September 18th 2025&lt;br /&gt;
* October 23rd 2025&lt;br /&gt;
* November 20th 2025&lt;br /&gt;
* December 18th 2025&lt;br /&gt;
* January 22nd 2026&lt;br /&gt;
* February 19th 2026&lt;br /&gt;
* March 19th 2026&lt;br /&gt;
* April 23rd 2026&lt;br /&gt;
* May 28th 2026 (Adjusted date for CIO-imposed network change freeze)&lt;br /&gt;
* June 18th 2026&lt;br /&gt;
* July 23rd 2026&lt;br /&gt;
* August 20th 2026&lt;br /&gt;
* September 17th 2026&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13426</id>
		<title>MonthlyMaintenanceWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13426"/>
		<updated>2026-09-30T20:23:40Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HelpDesk | UMIACS staff]] takes a monthly maintenance window to patch and reboot all UMIACS-supported hosts and services.  This provides a way for staff to ensure security updates are installed and applied on the numerous different platforms and appliances that UMIACS runs.&lt;br /&gt;
&lt;br /&gt;
The window for each month is calculated by adding 9 days to [https://en.wikipedia.org/wiki/Patch_Tuesday Microsoft&#039;s Patch Tuesday] to allow for enough time to marshal patches released that month from Microsoft, Red Hat, Apple, and other OS and application vendors and have enough time to get systems prepared to reboot.  This translates to the window being on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month.  The window lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Nexus]] will always have a reservation in place from 4:45pm-8pm on the day of the upcoming window to prevent jobs from being scheduled on compute nodes. The 15-minute addition before the start of the window is to allow jobs to fully end. Any job submitted before the reservation begins that has a time limit that would run into the reservation will be held until at least the end of the reservation - 8pm on the day of the window. This is to prevent issues with jobs failing to end properly causing delays in work we have scheduled during the window.&lt;br /&gt;
&lt;br /&gt;
A list of upcoming maintenance windows is as follows, with the next one in bold. Again, the window is on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month, and lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;October 22nd 2026&#039;&#039;&#039;&lt;br /&gt;
* November 19th 2026&lt;br /&gt;
* December 17th 2026&lt;br /&gt;
&lt;br /&gt;
==Archives==&lt;br /&gt;
* January 17th 2013 - BEGIN time of 8pm-12am for this window through February 20th 2020&lt;br /&gt;
* February 21st 2013&lt;br /&gt;
* March 21st 2013&lt;br /&gt;
* April 18th 2013&lt;br /&gt;
* May 23rd 2013&lt;br /&gt;
* June 20th 2013&lt;br /&gt;
* July 18th 2013&lt;br /&gt;
* August 22nd 2013&lt;br /&gt;
* September 19th 2013&lt;br /&gt;
* October 17th 2013&lt;br /&gt;
* December 19th 2013&lt;br /&gt;
* January 23rd 2014&lt;br /&gt;
* February 20th 2014&lt;br /&gt;
* March 20th 2014&lt;br /&gt;
* April 17th 2014&lt;br /&gt;
* May 22nd 2014&lt;br /&gt;
* June 19th 2014&lt;br /&gt;
* July 17th 2014&lt;br /&gt;
* August 21st 2014&lt;br /&gt;
* September 18th 2014&lt;br /&gt;
* October 23rd 2014&lt;br /&gt;
* November 20th 2014&lt;br /&gt;
* December 18th 2014&lt;br /&gt;
* January 22nd 2015&lt;br /&gt;
* February 19th 2015&lt;br /&gt;
* March 19th 2015&lt;br /&gt;
* May 21st 2015&lt;br /&gt;
* June 18th 2015&lt;br /&gt;
* July 23rd 2015&lt;br /&gt;
* August 20th 2015&lt;br /&gt;
* September 17th 2015&lt;br /&gt;
* October 22nd 2015&lt;br /&gt;
* November 19th 2015&lt;br /&gt;
* December 17th 2015&lt;br /&gt;
* January 21st 2016&lt;br /&gt;
* February 18th 2016&lt;br /&gt;
* March 12th 2016 (Adjusted date for AVW power outage)&lt;br /&gt;
* April 21st 2016&lt;br /&gt;
* May 19th 2016&lt;br /&gt;
* June 23rd 2016&lt;br /&gt;
* July 21st 2016&lt;br /&gt;
* August 18th 2016&lt;br /&gt;
* September 22nd 2016&lt;br /&gt;
* October 20th 2016&lt;br /&gt;
* November 17th 2016&lt;br /&gt;
* December 22nd 2016&lt;br /&gt;
* January 19th 2017&lt;br /&gt;
* February 23rd 2017&lt;br /&gt;
* March 23rd 2017&lt;br /&gt;
* April 20th 2017&lt;br /&gt;
* May 18th 2017&lt;br /&gt;
* June 22nd 2017&lt;br /&gt;
* July 20th 2017&lt;br /&gt;
* August 17th 2017&lt;br /&gt;
* September 21st 2017&lt;br /&gt;
* October 19th 2017&lt;br /&gt;
* December 21st 2017&lt;br /&gt;
* January 18th 2018&lt;br /&gt;
* February 22nd 2018&lt;br /&gt;
* March 22nd 2018&lt;br /&gt;
* April 19th 2018&lt;br /&gt;
* May 17th 2018&lt;br /&gt;
* June 21st 2018&lt;br /&gt;
* July 19th 2018&lt;br /&gt;
* August 23rd 2018&lt;br /&gt;
* September 20th 2018&lt;br /&gt;
* October 18th 2018&lt;br /&gt;
* December 20th 2018&lt;br /&gt;
* January 24th 2019&lt;br /&gt;
* February 21st 2019&lt;br /&gt;
* April 18th 2019&lt;br /&gt;
* May 23rd 2019&lt;br /&gt;
* June 20th 2019&lt;br /&gt;
* July 18th 2019&lt;br /&gt;
* August 22nd 2019&lt;br /&gt;
* September 19th 2019&lt;br /&gt;
* October 17th 2019&lt;br /&gt;
* November 21st 2019&lt;br /&gt;
* December 19th 2019&lt;br /&gt;
* January 23rd 2020&lt;br /&gt;
* February 20th 2020&lt;br /&gt;
* April 23rd 2020 - BEGIN time of 5pm-7pm for this window through August 19th 2021&lt;br /&gt;
* June 18th 2020&lt;br /&gt;
* July 23rd 2020&lt;br /&gt;
* August 20th 2020&lt;br /&gt;
* September 17th 2020&lt;br /&gt;
* October 22nd 2020&lt;br /&gt;
* November 19th 2020&lt;br /&gt;
* December 17th 2020&lt;br /&gt;
* January 21st 2021&lt;br /&gt;
* February 18th 2021&lt;br /&gt;
* March 25th 2021 (Adjusted date for extended Spring Break)&lt;br /&gt;
* April 22nd 2021&lt;br /&gt;
* May 20th 2021&lt;br /&gt;
* June 17th 2021&lt;br /&gt;
* July 22nd 2021&lt;br /&gt;
* August 19th 2021&lt;br /&gt;
* September 23rd 2021 - BEGIN time of 5pm-8pm for this window and all others below&lt;br /&gt;
* October 21st 2021&lt;br /&gt;
* November 18th 2021&lt;br /&gt;
* January 20th 2022&lt;br /&gt;
* February 17th 2022&lt;br /&gt;
* March 24th 2022 (Adjusted date for Spring Break)&lt;br /&gt;
* April 21st 2022&lt;br /&gt;
* May 19th 2022&lt;br /&gt;
* June 23rd 2022&lt;br /&gt;
* July 21st 2022&lt;br /&gt;
* August 18th 2022&lt;br /&gt;
* September 22nd 2022&lt;br /&gt;
* October 20th 2022&lt;br /&gt;
* November 17th 2022&lt;br /&gt;
* January 19th 2023&lt;br /&gt;
* February 23rd 2023&lt;br /&gt;
* April 20th 2023&lt;br /&gt;
* May 18th 2023&lt;br /&gt;
* June 22nd 2023&lt;br /&gt;
* July 20th 2023&lt;br /&gt;
* August 17th 2023&lt;br /&gt;
* September 21st 2023&lt;br /&gt;
* October 19th 2023&lt;br /&gt;
* December 20th 2023 (Adjusted date for early Winter Break)&lt;br /&gt;
* January 18th 2024&lt;br /&gt;
* February 22nd 2024&lt;br /&gt;
* March 21st 2024&lt;br /&gt;
* April 18th 2024&lt;br /&gt;
* May 23th 2024&lt;br /&gt;
* June 20th 2024&lt;br /&gt;
* July 18th 2024&lt;br /&gt;
* August 22nd 2024&lt;br /&gt;
* September 19th 2024&lt;br /&gt;
* October 17th 2024&lt;br /&gt;
* November 21st 2024&lt;br /&gt;
* December 19th 2024&lt;br /&gt;
* January 23rd 2025&lt;br /&gt;
* February 20th 2025&lt;br /&gt;
* March 20th 2025&lt;br /&gt;
* April 17th 2025&lt;br /&gt;
* May 22nd 2025&lt;br /&gt;
* June 19th 2025&lt;br /&gt;
* July 17th 2025&lt;br /&gt;
* August 21st 2025&lt;br /&gt;
* September 18th 2025&lt;br /&gt;
* October 23rd 2025&lt;br /&gt;
* November 20th 2025&lt;br /&gt;
* December 18th 2025&lt;br /&gt;
* January 22nd 2026&lt;br /&gt;
* February 19th 2026&lt;br /&gt;
* March 19th 2026&lt;br /&gt;
* April 23rd 2026&lt;br /&gt;
* May 28th 2026 (Adjusted date for CIO-imposed network change freeze)&lt;br /&gt;
* June 18th 2026&lt;br /&gt;
* July 23rd 2026&lt;br /&gt;
* August 20th 2026&lt;br /&gt;
* September 17th 2026&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=MailmanListAdmin&amp;diff=13425</id>
		<title>MailmanListAdmin</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=MailmanListAdmin&amp;diff=13425"/>
		<updated>2026-09-25T16:31:59Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mailman List Administration==&lt;br /&gt;
The full documentation can be found at (among other places) the Mailman administrators guide: https://www.gnu.org/software/mailman/&lt;br /&gt;
&lt;br /&gt;
Once UMIACS staff has created your list, they will tell you what the password is for managing this list. You&#039;ll need this password to do various list management things such as add/remove users, approve user subscription or postings for restricted lists, and tailor the list.&lt;br /&gt;
&lt;br /&gt;
If staff was provided with a list of initial subscribers, these people will have already been subscribed. Tell your users that if they&#039;d like to subscribe, they need only go to&lt;br /&gt;
&lt;br /&gt;
  https://lists.umiacs.umd.edu/mailman/listinfo/LISTNAME&lt;br /&gt;
&lt;br /&gt;
even if the list is private (not advertised or listed).&lt;br /&gt;
&lt;br /&gt;
They can also subscribe/unsubscribe by email by sending to&lt;br /&gt;
   &lt;br /&gt;
  LISTNAME-subscribe and LISTNAME-unsubscribe&lt;br /&gt;
&lt;br /&gt;
respectively. In ALL of the above cases, the user will receive email confirming their action. They just need to reply to the email for this to take effect.&lt;br /&gt;
&lt;br /&gt;
===Managing a List===&lt;br /&gt;
To manage your list, go to:&lt;br /&gt;
&lt;br /&gt;
   https://lists.umiacs.umd.edu/mailman/admin/LISTNAME&lt;br /&gt;
&lt;br /&gt;
You will be prompted for the aforementioned password. In general, most of the default settings are likely to be fine but you should know about the following capabilities and pieces of information.&lt;br /&gt;
&lt;br /&gt;
* Just because you are the list administrator doesn&#039;t mean you&#039;re subscribed to (or have to be subscribed to) the list.&lt;br /&gt;
* Messages sent out aren&#039;t necessarily delivered immediately; it could take up to 5 minutes.&lt;br /&gt;
&lt;br /&gt;
====Membership Management====&lt;br /&gt;
   https://lists.umiacs.umd.edu/mailman/admin/LISTNAME/members&lt;br /&gt;
&lt;br /&gt;
This is where you can subscribe and unsubscribe users, hide their email addresses, and more.&lt;br /&gt;
* To subscribe other people, on this form, enter their addresses in the text window under the &amp;quot;Mass Subscription&amp;quot; section. Please note that if the user you are adding has a UMD address, you should use that address in order to comply with the [https://umd.service-now.com/itsupport/?sys_kb_id=6b102078dbbec8d06aa4151748961927&amp;amp;id=kb_article_view&amp;amp;sysparm_rank=2&amp;amp;sysparm_tsqueryId=c11ba448db4788906aa4151748961904#institutional-email-standard Institutional email standard].&lt;br /&gt;
* If a user goes on vacation, you can change the option to &amp;quot;nomail&amp;quot; for them on this form turning off mailing to that individual until he/she returns. Of course, users can do this themselves as well.&lt;br /&gt;
* If a user forgets their password, clicking on the user&#039;s email address on this form allows you to send them an email message containing their password.&lt;br /&gt;
&lt;br /&gt;
====Privacy options====&lt;br /&gt;
   https://lists.umiacs.umd.edu/mailman/admin/LISTNAME/privacy&lt;br /&gt;
&lt;br /&gt;
This is where you can specify whether or not the list is visible to the world, whether or not administrative approval is required to subscribe to the list, who can view the list of subscribers, who can post to the list (is it open or moderated?), and more.&lt;br /&gt;
&lt;br /&gt;
====Archiving Options====&lt;br /&gt;
   https://lists.umiacs.umd.edu/mailman/admin/LISTNAME/archive&lt;br /&gt;
&lt;br /&gt;
This is where you can choose whether or not to archive messages send to the list. By default, messages are archived and are available only to subscribers of the list using their subscribing password at  https://lists.umiacs.umd.edu/mailman/private/LISTNAME. You can change this to make messages available to the public or turn off archiving entirely. &#039;&#039;&#039;Archives are not searchable.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===General Settings===&lt;br /&gt;
Most of the defaults for lists are probably fine but a number of them bear special mention. &lt;br /&gt;
&lt;br /&gt;
Options under &#039;&#039;Subscribing&#039;&#039; under &amp;quot;Privacy options&amp;quot;:&lt;br /&gt;
* By default, no one can see the list.&lt;br /&gt;
** If this is not the behavior you want, change the setting on the first item &amp;quot;Advertise this list when people ask what lists are on this machine?&amp;quot; from NO to YES, and then &amp;quot;Submit Your Changes&amp;quot; on the bottom of the page. Note that even if users can&#039;t see the list, they can still subscribe (or try to subscribe). They simply need to know the URL.&lt;br /&gt;
* By default, anyone can subscribe to the list. (To ensure that someone can&#039;t subscribe someone else as a prank, Mailman sends a confirm email message to the users asking something like, &amp;quot;You have been subscribed to.... Are you sure you want to subscribe? Just REPLYing to this message will subscribe you&amp;quot;).&lt;br /&gt;
** If this is not the behavior you want, change the setting on the second item &amp;quot;What steps are required for subscription?&amp;quot; and click &amp;quot;Require approval&amp;quot; or &amp;quot;Confirm and approve&amp;quot; and then &amp;quot;Submit Your Changes&amp;quot; on the bottom of the page. Approval means that you, as the list administrator, will get a message saying USER@HOST wants to subscribe. You can then approve or discard their request.&lt;br /&gt;
&lt;br /&gt;
Option under &#039;&#039;Membership exposure&#039;&#039; under &amp;quot;Privacy options&amp;quot;:&lt;br /&gt;
* By default, only list members can see the email addresses of other list members. &#039;&#039;&#039;Users can hide their own addresses from their list subscription page&#039;&#039;&#039;. Likewise, you can hide some users and not others from the &amp;quot;Membership Management&amp;quot; page.&lt;br /&gt;
** If you want to broadly change visibility for all users, change the setting on the first item &amp;quot;Who can view subscription list?&amp;quot; and click either &amp;quot;Anyone&amp;quot; or &amp;quot;List admin only&amp;quot; and then &amp;quot;Submit Your Changes&amp;quot; on the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
===Moderated Lists===&lt;br /&gt;
====Setup====&lt;br /&gt;
If you want your list to be moderated (i.e. ONLY you and/or a few others can post to it), this can be set at the bottom of the &amp;quot;Membership Management&amp;quot; --&amp;gt; &amp;quot;Membership List&amp;quot; page. Make sure to also set this for all new members under &amp;quot;Privacy options&amp;quot; --&amp;gt; &amp;quot;Sender filters&amp;quot;. If moderation is set, make sure the list admin (and/or whomever you want to be able to send to the list) has their moderation bit turned off.&lt;br /&gt;
&lt;br /&gt;
List admins can add moderators to a list by entering their email addresses in the &amp;quot;The list moderator email addresses. Multiple moderator addresses, each on separate line is okay.&amp;quot; box on the &amp;quot;General Options&amp;quot; page of the list&#039;s admin interface:&lt;br /&gt;
:[[File:Mailmanmoderators.png|alt=Screenshot of admin interface highlighting the previously described box]]&lt;br /&gt;
&lt;br /&gt;
As soon as the first moderator is added to the list, a list admin should set the moderator password and communicate it to the initial moderator(s). This password can only be changed by a list admin. It does not give full administrative access to the list.&lt;br /&gt;
&lt;br /&gt;
====For list moderators====&lt;br /&gt;
Moderators and administrators will receive an email similar to the following if a message is being held for moderation:&lt;br /&gt;
:[[File:Moderationemail.png|alt=Screen of example email to expect if something is held for moderation]]&lt;br /&gt;
&lt;br /&gt;
The provided URL can also be visited at any time to view the queue of messages pending moderation:&lt;br /&gt;
&lt;br /&gt;
   https://lists.umiacs.umd.edu/mailman/admindb/LISTNAME&lt;br /&gt;
&lt;br /&gt;
From here, if there are one or more messages pending moderation, you will see a summary of the messages broken down per-sender. Please note that the addresses in these screenshots are hidden for privacy, but will appear on the actual moderation page.&lt;br /&gt;
&lt;br /&gt;
There are two ways messages from senders may appear on this interface, depending on whether or not the sender is a member of the list:&lt;br /&gt;
* If the sender is a member of the list (but their moderation bit is on):&lt;br /&gt;
*: [[File:Moderatedmember_held.png|alt=Screenshot of message pending moderation when the sender is a member of the list it is being sent to]]&lt;br /&gt;
* If the sender is not a member of the list:&lt;br /&gt;
*: [[File:Nonmember_held.png|alt=Screenshot of message pending moderation when the sender is not a member of the list it is being sent to]]&lt;br /&gt;
&lt;br /&gt;
From these windows, you can choose an action (Defer, Accept, Reject, Discard) for all messages from a specific sender via the radio buttons in the left sub-window, or handle individual messages by clicking on the [#] hyperlinks next to each subject line.&lt;br /&gt;
&lt;br /&gt;
The key difference between the two categories of held messages (from a moderated member vs. from a non-member) is how you can handle future messages from the respective senders in the future:&lt;br /&gt;
* For moderated members, you can choose the &amp;quot;Clear this member&#039;s moderate flag&amp;quot; option in the window for that member to automatically allow future messages from them to the list. &lt;br /&gt;
* For non-members, you can choose to either add the sender&#039;s email address to one of the automatic filters for non-members (Accept, Hold, Reject, or Discard) to automatically action their messages in the future. There is also an option to ban the sender&#039;s email address from subscribing to the list if you see fit.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13424</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13424"/>
		<updated>2026-09-25T16:12:21Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs to run your IDE in rather than running your IDE on submission nodes.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print the hostname of the compute node you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --cpus-per-task=2 --mem=4G&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the CPUs, memory, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be under the &#039;nexus&#039; account on the &#039;[[Nexus/Tron | tron]]&#039; partition, subject to the &#039;default&#039; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
# Once connected, begin using VS Code on the compute node however you would like - your allocation is constrained to the amount of CPUs and memory requested, so it will not affect other users&#039; jobs / allocations running on the node. If you find that your processes are being killed within your allocation due to running out of memory, try requesting more memory for your next allocation.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13423</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13423"/>
		<updated>2026-09-25T15:53:06Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for you to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions if need dictates. For the time being, please be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that you do not use more than 2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least one core fully utilized) for extended periods of time. Utilizing more than one core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node, as swapping memory requires CPU time.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Running Slurm job submission commands: &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using as a SSH jump host to connect to other hosts&lt;br /&gt;
* Performing basic code editing in editors with minimal extensions, e.g., emacs, nano, vim, neovim without an LSP.&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize, especially AI/LLM ones.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]]. If you are using AI/LLM extensions, please consider running your IDE on a compute node, which there are instructions for doing on the linked page.&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes - we suggest using the scavenger partition.&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers, e.g., pip, npm, conda/mamba.&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to you. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job - we suggest using the scavenger partition.&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If you repeatedly cause issues, further action may be taken on your account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-u $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13422</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13422"/>
		<updated>2026-09-25T15:52:50Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for you to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions if need dictates. For the time being, please be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that you do not use more than 1-2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least one core fully utilized) for extended periods of time. Utilizing more than one core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node, as swapping memory requires CPU time.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Running Slurm job submission commands: &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using as a SSH jump host to connect to other hosts&lt;br /&gt;
* Performing basic code editing in editors with minimal extensions, e.g., emacs, nano, vim, neovim without an LSP.&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize, especially AI/LLM ones.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]]. If you are using AI/LLM extensions, please consider running your IDE on a compute node, which there are instructions for doing on the linked page.&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes - we suggest using the scavenger partition.&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers, e.g., pip, npm, conda/mamba.&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to you. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job - we suggest using the scavenger partition.&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If you repeatedly cause issues, further action may be taken on your account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-u $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13421</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13421"/>
		<updated>2026-09-25T15:52:26Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for you to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions in the future. For the time being, be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that you do not use more than 1-2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least one core fully utilized) for extended periods of time. Utilizing more than one core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node, as swapping memory requires CPU time.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Running Slurm job submission commands: &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using as a SSH jump host to connect to other hosts&lt;br /&gt;
* Performing basic code editing in editors with minimal extensions, e.g., emacs, nano, vim, neovim without an LSP.&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize, especially AI/LLM ones.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]]. If you are using AI/LLM extensions, please consider running your IDE on a compute node, which there are instructions for doing on the linked page.&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes - we suggest using the scavenger partition.&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers, e.g., pip, npm, conda/mamba.&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to you. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job - we suggest using the scavenger partition.&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If you repeatedly cause issues, further action may be taken on your account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-u $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13420</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13420"/>
		<updated>2026-09-25T15:49:05Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for users to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions in the future. For the time being, be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that users on these nodes do not use more than 1-2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least one core fully utilized) for extended periods of time. Utilizing more than one core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node, as swapping memory requires CPU time.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Running Slurm job submission commands: &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using as a SSH jump host to connect to other hosts&lt;br /&gt;
* Performing basic code editing in editors with minimal extensions, e.g., emacs, nano, vim, neovim without an LSP.&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize, especially AI/LLM ones.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]]. If you are using AI/LLM extensions, please consider running your IDE on a compute node, which there are instructions for doing on the linked page.&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes - we suggest using the scavenger partition.&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers, e.g., pip, npm, conda/mamba.&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to the user. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job - we suggest using the scavenger partition.&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If a user repeatedly causes issues, further action may be taken on their account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-u $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13419</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13419"/>
		<updated>2026-09-25T15:46:34Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for users to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions in the future. For the time being, be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that users on these nodes do not use more than 1-2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least 1 core fully utilized) for extended periods of time. Utilizing more than 1 core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node, as swapping memory requires CPU time.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Running Slurm job submission commands: &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using as a SSH jump host to connect to other hosts&lt;br /&gt;
* Performing basic code editing in editors with minimal extensions, e.g., emacs, nano, vim, neovim without an LSP.&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize, especially AI/LLM ones.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]]. If you are using AI/LLM extensions, please consider running your IDE on a compute node, which there are instructions for doing on the linked page.&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes - we suggest using the scavenger partition.&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers, e.g., pip, npm, conda/mamba.&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to the user. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job - we suggest using the scavenger partition.&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If a user repeatedly causes issues, further action may be taken on their account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-u $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13418</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13418"/>
		<updated>2026-09-25T15:42:20Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for users to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions in the future. For the time being, be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that users on these nodes do not use more than 1-2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least 1 core fully utilized) for extended periods of time. Utilizing more than 1 core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node, as swapping memory requires CPU time.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Running Slurm job submission commands: &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt;&lt;br /&gt;
* Using as a SSH jump host to connect to other hosts&lt;br /&gt;
* Performing basic code editing in editors with minimal extensions (e.g. emacs, nano, vim, neovim without an LSP).&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]].&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes (we suggest using the scavenger partition).&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers (e.g. pip, npm, conda/mamba)&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to the user. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job (we suggest using the scavenger partition).&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If a user repeatedly causes issues, further action may be taken on their account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-u $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13417</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13417"/>
		<updated>2026-09-25T14:36:03Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs to run your IDE in rather than running it on submission nodes.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print the hostname of the compute node you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --cpus-per-task=2 --mem=4G&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the CPUs, memory, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be under the &#039;nexus&#039; account on the &#039;[[Nexus/Tron | tron]]&#039; partition, subject to the &#039;default&#039; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
# Once connected, begin using VS Code on the compute node however you would like - your allocation is constrained to the amount of CPUs and memory requested, so it will not affect other users&#039; jobs / allocations running on the node. If you find that your processes are being killed within your allocation due to running out of memory, try requesting more memory for your next allocation.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13416</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13416"/>
		<updated>2026-09-25T14:31:51Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs to run your IDE in rather than running it on submission nodes.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print the hostname of the compute node you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --cpus-per-task=2 --mem=4G&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the CPUs, memory, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the [[Nexus/Tron | tron]] partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
# Once connected, begin using VS Code on the compute node however you would like - your allocation is constrained to the amount of CPUs and memory requested, so it will not affect other users&#039; jobs / allocations running on the node. If you find that your processes are being killed within your allocation due to running out of memory, try requesting more memory for your next allocation.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13415</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13415"/>
		<updated>2026-09-24T18:22:03Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs to run your IDE in rather than running it on submission nodes.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print the hostname of the compute node you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the [[Nexus/Tron | tron]] partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
# Once connected, begin using VS Code on the compute node however you would like - your allocation is constrained to the amount of memory and CPUs requested, so it will not affect other users&#039; jobs / allocations running on the node. If you find that your processes are being killed within your allocation due to running out of memory, try requesting more memory for your next allocation.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13414</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13414"/>
		<updated>2026-09-24T18:13:14Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs to run your IDE in rather than running it on submission nodes.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the [[Nexus/Tron | tron]] partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
# Once connected, begin using VS Code on the compute node however you would like - your allocation is constrained to the amount of memory and CPUs requested, so it will not affect other users&#039; jobs / allocations running on the node. If you find that your processes are being killed within your allocation due to running out of memory, try requesting more memory for your next allocation.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13413</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13413"/>
		<updated>2026-09-24T17:46:48Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs to run your IDE in rather than running it on submission nodes.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the [[Nexus/Tron | tron]] partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13412</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13412"/>
		<updated>2026-09-24T17:45:41Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs for your IDE.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the [[Nexus/Tron | tron]] partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13411</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13411"/>
		<updated>2026-09-24T17:22:12Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs for your IDE.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the [[Nexus/Tron | tron]] partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13410</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13410"/>
		<updated>2026-09-24T17:20:50Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Running VS Code on a Compute Node */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs for your IDE.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the &amp;lt;code&amp;gt;tron&amp;lt;/code&amp;gt; partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13409</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13409"/>
		<updated>2026-09-24T17:20:11Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs for your IDE.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --mem=4G --cpus-per-task=2 --time=08:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#* Without any other arguments, this allocation will be on the &amp;lt;code&amp;gt;tron&amp;lt;/code&amp;gt; partition, subject to the &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; QoS resource limits. If you need resources beyond what the default QoS allows, you can adjust the account/partition/QoS assigned to the allocation as you can with any other job.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13408</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13408"/>
		<updated>2026-09-24T16:54:10Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Running VS Code on a Compute Node===&lt;br /&gt;
VS Code with resource-intensive LSPs or AI/LLM extensions can cause usability issues on submission nodes. If you are using these extensions, we recommend setting up CPU-only compute jobs for your IDE.&lt;br /&gt;
&lt;br /&gt;
# SSH to your submission node.&lt;br /&gt;
# Open a [[Tmux]] session for your salloc command. salloc will only hold your allocation if you don&#039;t close your shell, so tmux is a convenient way to keep a persistent shell open on the submission node.&lt;br /&gt;
# In your tmux session on the submission node, use &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; to request an allocation on a compute node. Once allocated, it will print hostname of the compute node which you were allocated.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;salloc --partition=tron --mem=4G --cpus-per-task=2 --time=1-00:00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You can adjust the memory, CPUs, and time limit as needed.&lt;br /&gt;
#*: [[File:Salloc example.png|thumb|400px|none|Example of output from running salloc.]]&lt;br /&gt;
# On your local machine, use the Remote-SSH plugin on VS Code to connect directly to the compute node.&lt;br /&gt;
#: [[File:Add remote.png|thumb|400px|none|If the compute node is not defined, press the &amp;quot;+&amp;quot; to add a new remote.]][[File:Ssh command.png|thumb|400px|none|SSH command specifying compute name.]][[File:Update ssh config.png|thumb|400px|none|It will ask you which SSH config file it should use to store this remote. It&#039;s best to choose the one in your home directory.]][[File:Connect to remote.png|thumb|400px|none|With the compute node added, click the arrow to connect to the compute node.]]&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13400</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13400"/>
		<updated>2026-09-23T13:40:25Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Keep data separate from code where possible&#039;&#039;&#039;&lt;br /&gt;
#: Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Limit maximum number of threads for searches&#039;&#039;&#039;&lt;br /&gt;
#: By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Shortening the Remote-SSH Reconnection Grace Time&#039;&#039;&#039;&lt;br /&gt;
#: You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
#: This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
#: This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
#: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
# &#039;&#039;&#039;Manually killing a remote VS Code server&#039;&#039;&#039;&lt;br /&gt;
#: You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
#: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
#: Select the submission node you were using and click on it.&lt;br /&gt;
#: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
#: Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
#: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
#: The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13399</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13399"/>
		<updated>2026-09-23T13:33:20Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to.&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
=====Keep data separate from code where possible=====&lt;br /&gt;
Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====Limit maximum number of threads for searches=====&lt;br /&gt;
By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
=====Shortening the Remote-SSH Reconnection Grace Time=====&lt;br /&gt;
You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
&lt;br /&gt;
This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
&lt;br /&gt;
This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
&lt;br /&gt;
=====Manually killing a remote VS Code server=====&lt;br /&gt;
You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
&lt;br /&gt;
Select the submission node you were using and click on it.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
&lt;br /&gt;
Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
&lt;br /&gt;
The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SecureShell/MFA&amp;diff=13398</id>
		<title>SecureShell/MFA</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SecureShell/MFA&amp;diff=13398"/>
		<updated>2026-09-18T15:59:39Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
UMIACS has rolled out multi-factor authentication requirements when using [[SSH]] to connect to our publicly-routable hosts to provide better account and data security. Publicly-routable hosts in the context of UMIACS are hosts that have an IP address in one of the following [https://en.wikipedia.org/wiki/Subnet subnets]:&lt;br /&gt;
* 128.8.118.0/23&lt;br /&gt;
* 128.8.120.0/23&lt;br /&gt;
* 128.8.122.0/24&lt;br /&gt;
* 128.8.124.0/24&lt;br /&gt;
* 128.8.141.0/24&lt;br /&gt;
* 129.2.30.0/26&lt;br /&gt;
&lt;br /&gt;
SSH has two different authentication methods that we currently support on all of our internal hosts: interactive password authentication and [[SSH/Keys | public key authentication]]. Multi-factor authentication-enabled SSH on our public-facing hosts only supports interactive password authentication, with the secondary factor coming from [https://it.umd.edu/multi-factor-authentication-mfa UMD&#039;s Duo instance]. We do not support public key based authentication and Duo multi-factor authentication on our public-facing hosts. Please note that unfortunately [https://en.wikipedia.org/wiki/Universal_2nd_Factor U2F] hardware tokens registered with Duo are not supported for SSH login specifically. Other hardware tokens such as a [https://www.yubico.com/products/yubikey-5-overview/ YubiKey] or [https://guide.duo.com/tokens Duo&#039;s own hardware token] will still work.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The initial command or session setup for connecting to a host with multi-factor authentication enabled over SSH is the same as one that does not have it enabled. Our example for connecting to a host over SSH can be found [[SecureShell#Connecting_to_an_SSH_Server | here]]. In the below example, we are also SSH-ing to a [[Nexus]] node e.g. &amp;lt;code&amp;gt;ssh username@nexusgroup.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you enter the command (if using a native terminal) or start the session (PuTTY or other terminal emulators), you will be presented with the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Password:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter your UMD passphrase here (the same as if you were using interactive password authentication to connect to an internal host). After correctly entering your password, you will be taken to the following prompt. &#039;&#039;&#039;Please note: The options shown here will vary depending on what/how many devices you have registered with UMD&#039;s Duo instance.&#039;&#039;&#039; In this example, we just have a single mobile phone with an active phone number and the Duo Mobile app installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Password:&lt;br /&gt;
Duo two-factor login for username&lt;br /&gt;
&lt;br /&gt;
Enter a passcode or select one of the following options:&lt;br /&gt;
&lt;br /&gt;
 1. Duo Push to XXX-XXX-1234&lt;br /&gt;
 2. Phone call to XXX-XXX-1234&lt;br /&gt;
&lt;br /&gt;
Passcode or option (1-2):&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(if you have a registered phone, the last 4 digits shown will be replaced with the last 4 digits of the phone number you specifically have registered)&lt;br /&gt;
&lt;br /&gt;
The numbered options here correspond to different methods that Duo can take to authenticate you, and are more or less identical to the options that would be presented to you via a GUI if you were attempting to sign into UMD&#039;s Duo elsewhere. &lt;br /&gt;
&lt;br /&gt;
===Duo Push to ___===&lt;br /&gt;
This will send a push notification to the Duo app on whichever device you chose for you to accept to proceed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Passcode or option (1-2): 1&lt;br /&gt;
&lt;br /&gt;
Pushed a login request to your device...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Phone call to XXX-XXX-XXXX===&lt;br /&gt;
This will call your registered phone and ask you to press any key on your phone to proceed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Passcode or option (1-2): 2&lt;br /&gt;
&lt;br /&gt;
Calling your phone...&lt;br /&gt;
Dialing XXX-XXX-1234...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(After answering) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Answered. Press any key on your phone to log in.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tap YubiKey===&lt;br /&gt;
In addition, you can also simply tap the sensor on your YubiKey plugged into the device you are using to SSH to have it emit a string of characters and automatically hit Enter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Enter a passcode or select one of the following options:&lt;br /&gt;
&lt;br /&gt;
 1. Duo Push to XXX-XXX-1234&lt;br /&gt;
 2. Phone call to XXX-XXX-1234&lt;br /&gt;
&lt;br /&gt;
Passcode or option (1-2): kffuastenhldrhfhadafdarivuntddugrvjvllddjjuget&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wrapping up==&lt;br /&gt;
After finishing your method of choice for using Duo to multi-factor authenticate, you will be logged in and can operate as normal.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Success. Logging you in...&lt;br /&gt;
Last login: Wed Feb 17 12:00:00 2021 from ...&lt;br /&gt;
[username@nexusgroup00 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Subsequent SSH attempts from the window you have already connected to will not require multi-factor authentication, even if the host you are trying to SSH to is another public-facing host. This is because the point of origin for the network traffic behind the connection attempt is now coming from within UMIACS&#039; network border, rather than the rest of the internet.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusgroup00 ~]$ ssh nexusgroup01.umiacs.umd.edu&lt;br /&gt;
username@nexusgroup01.umiacs.umd.edu&#039;s password:&lt;br /&gt;
Last login: Wed Feb 17 11:59:00 2021 from ...&lt;br /&gt;
[username@nexusgroup01 ~]$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Considerations==&lt;br /&gt;
Since there is now an additional step to log in to our public-facing hosts, we would recommend using a [https://en.wikipedia.org/wiki/Terminal_multiplexer terminal multiplexer] such as [[Tmux]] to minimize the number of times you need to multi-factor authenticate. Terminal multiplexers allow you to start several different processes out of one terminal display, and also detach from and later reattach to each of the processes.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SecureShell&amp;diff=13397</id>
		<title>SecureShell</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SecureShell&amp;diff=13397"/>
		<updated>2026-09-18T15:58:58Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Long Running Processes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Secure Shell (or [http://en.wikipedia.org/wiki/Secure_Shell SSH]) is a network protocol allowing two computers to exchange data securely over an insecure network.  By default, use of SSH brings the user to a terminal, but the protocol can be used for other types of data transfer such as [[SFTP]] and [[SCP]].&lt;br /&gt;
&lt;br /&gt;
==Connecting to an SSH Server==&lt;br /&gt;
Under Linux and macOS, the following command from a terminal will connect a client computer to the UMIACS [[Nexus]].&lt;br /&gt;
 # ssh username@nexusgroup.umiacs.umd.edu&lt;br /&gt;
 &#039;&#039;&#039;Note: Your Nexus submission node will vary depending on your sponsorship. See [[Nexus#Access|Nexus Access]] for more information.&#039;&#039;&#039;&lt;br /&gt;
This will give you access to a terminal on any one of the [[Nexus]] servers.  Note that by default you will not have access to applications that require X11 to run.&lt;br /&gt;
&lt;br /&gt;
All UMIACS-supported Windows hosts are installed with [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. If you are using a personal machine, you can either download and install PuTTY yourself, or if you are running a [https://docs.microsoft.com/en-us/lifecycle/products/windows-10-enterprise-and-education currently supported version of Windows], you can install the OpenSSH client natively in Windows by following Microsoft&#039;s instructions [https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse here]. Only the client is needed and not the server.&lt;br /&gt;
&lt;br /&gt;
==X11 Forwarding==&lt;br /&gt;
By default, SSH only gives the user shell access to a host.  Enabling X11 Forwarding allows users to run applications with Graphical User Interfaces.&lt;br /&gt;
&lt;br /&gt;
Under Linux and macOS, the following command from a terminal will connect a client computer to the UMIACS [[Nexus]] using X11 Forwarding. Please note that under macOS, [http://xquartz.macosforge.org/landing/ xQuartz] is required on the client machine to forward X sessions from the remote session.&lt;br /&gt;
 # ssh &#039;&#039;&#039;-Y&#039;&#039;&#039; username@nexusgroup.umiacs.umd.edu&lt;br /&gt;
 &#039;&#039;&#039;Note: Your Nexus submission node will vary depending on your sponsorship. See [[Nexus#Access|Nexus Access]] for more information.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Under Windows, you will need to forward X through [http://sourceforge.net/projects/vcxsrv/ VcXsrv] or another X11 application.&lt;br /&gt;
&lt;br /&gt;
If using PuTTY, you will need to enable X forwarding. The option is under Connection &amp;gt; SSH &amp;gt; X11, shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Putty-x-forwarding.png |alt=Enabling X11 Forwarding in PuTTY settings]]&lt;br /&gt;
&lt;br /&gt;
If using the [https://learn.microsoft.com/en-us/windows/terminal/install Windows Terminal app], you will need to set an environment variable and then relaunch the app.&lt;br /&gt;
:&amp;lt;pre&amp;gt;setx.exe DISPLAY &amp;quot;127.0.0.1:0.0&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this has been done, every time you want to use X forwarding, you need to make sure VcXsrv or your other application has been started. If using VcXsrv, there will be an icon in your system tray.&lt;br /&gt;
&lt;br /&gt;
You will now be able to use Xwindow programs from your SSH client.&lt;br /&gt;
&lt;br /&gt;
==SSH Tunneling==&lt;br /&gt;
You can tunnel one or more ports through an SSH connection such that your packets will look like they are coming from the host you are tunneling to.   This is helpful for services that you would be normally blocked by a firewall.&lt;br /&gt;
&lt;br /&gt;
Please see the [[SecureShellTunneling]] page for more information.&lt;br /&gt;
&lt;br /&gt;
==SSH Keys (and Passwordless SSH)==&lt;br /&gt;
SSH can utilize public key encryption to authenticate and authorize users. This can be considered more secure especially if you secure your private key with a pass-phrase. The keys themselves are not susceptible to brute force attacks like normal passwords over SSH are.&lt;br /&gt;
&lt;br /&gt;
Please see the [[SSH/Keys]] page for more information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: UMIACS still requires multi-factor authentication if you are connecting from the public internet or a [[VPN]] for security reasons. SSH keys can only be used when connecting to a UMIACS-supported host from another host already within UMIACS&#039; network border.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Verify remote host SSH fingerprint==&lt;br /&gt;
&lt;br /&gt;
The SSH protocol relies on host keys to verify the identity of a given host.  Each host has a unique key for the various different protocols supported.  &lt;br /&gt;
&lt;br /&gt;
When connecting to a remote host for the first time, you may see the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh username@nexusstaff.umiacs.umd.edu                    &lt;br /&gt;
The authenticity of host &#039;nexusstaff.umiacs.umd.edu (128.8.132.230)&#039; can&#039;t be established.&lt;br /&gt;
ED25519 key fingerprint is: SHA256:N8+6sOAdq1NwvrpdHehe5MjQdnscNTBxvncqlHpt94o&lt;br /&gt;
This key is not known by any other names.&lt;br /&gt;
Are you sure you want to continue connecting (yes/no/[fingerprint])?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is considered best practice to verify the key fingerprint with the actual key of the host. It is important to note that each key type has a different fingerprint. Depending on your local configuration, your client may prefer a specific type of key. The following commands retrieves all SSH public host keys from the server and prints out the fingerprints of each key in the MD5 format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh-keyscan nexusstaff.umiacs.umd.edu &amp;gt; key&lt;br /&gt;
$ ssh-keygen -l -E md5 -f key                         &lt;br /&gt;
3072 MD5:aa:8f:e7:95:3f:ee:7c:23:0f:6f:9a:64:78:49:25:37 nexusstaff.umiacs.umd.edu (RSA)&lt;br /&gt;
256 MD5:34:29:ea:73:98:98:e0:7b:d4:c3:83:50:bc:cb:b3:61 nexusstaff.umiacs.umd.edu (ECDSA)&lt;br /&gt;
256 MD5:02:50:b3:3e:d7:65:fb:08:54:30:f3:8d:7d:48:02:fc nexusstaff.umiacs.umd.edu (ED25519)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
UMIACS maintains a reference of SSH key fingerprints available at the following link: &lt;br /&gt;
https://intranet.umiacs.umd.edu/hostkeys&lt;br /&gt;
&lt;br /&gt;
If you have any questions, or notice a discrepancy, please [[HelpDesk | contact staff]].&lt;br /&gt;
&lt;br /&gt;
===Windows / PuTTY Verification===&lt;br /&gt;
If you use PuTTY to connect to remote hosts, the prompt will be similar to the following:&lt;br /&gt;
&lt;br /&gt;
[[File:Putty ssh host key prompt.png |alt=PuTTY SSH host key prompt]]&lt;br /&gt;
&lt;br /&gt;
If the host key reported by PuTTY matches the [https://gitlab.umiacs.umd.edu/staff/ssh-fingerprints/blob/master/fingerprints Documented entry for that host], it is safe to click &#039;yes&#039;.  If you notice a discrepancy, please [[HelpDesk | contact staff]].&lt;br /&gt;
&lt;br /&gt;
===Other Platforms===&lt;br /&gt;
* [https://winscp.net/eng/docs/faq_hostkey WinSCP]&lt;br /&gt;
* [https://mobaxterm.mobatek.net/ MobaXterm]&lt;br /&gt;
&lt;br /&gt;
==Remote Host Identification Has Changed==&lt;br /&gt;
&lt;br /&gt;
If a host key has changed since you last connected, you may see the following warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh username@nexusstaff.umiacs.umd.edu                   &lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;br /&gt;
Someone could be eavesdropping on you right now (man-in-the-middle attack)!&lt;br /&gt;
It is also possible that a host key has just been changed.&lt;br /&gt;
The fingerprint for the ED25519 key sent by the remote host is&lt;br /&gt;
SHA256:N8+6sOAdq1NwvrpdHehe5MjQdnscNTBxvncqlHpt94o.&lt;br /&gt;
Please contact your system administrator.&lt;br /&gt;
Add correct host key in /Users/username/.ssh/known_hosts to get rid of this message.&lt;br /&gt;
Offending ED25519 key in /Users/username/.ssh/known_hosts:86&lt;br /&gt;
Host key for nexusstaff.umiacs.umd.edu has changed and you have requested strict checking.&lt;br /&gt;
Host key verification failed.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By default, SSH clients should refuse to connect when a remote host key has changed. If you see this warning, follow the instructions below to resolve.&lt;br /&gt;
&lt;br /&gt;
# [[#Verify remote host SSH fingerprint | Verify]] that the new fingerprint matches the fingerprint we publish at https://intranet.umiacs.umd.edu/hostkeys.&lt;br /&gt;
# Once verified, open the known_hosts file and go to the line referenced in the warning (in this example, /Users/username/.ssh/known_hosts at line 86) and remove the entry. Next time you connect, it will prompt you as if it were your first time connecting to the host.&lt;br /&gt;
&amp;lt;strong&amp;gt;NOTE:&amp;lt;/strong&amp;gt; This may need to be repeated if your known_hosts file has multiple types of keys for this host.&lt;br /&gt;
&lt;br /&gt;
==Long Running Processes==&lt;br /&gt;
If you are dealing with a long running process that is inhibiting your ability to work regularly, you may want to run your processes inside a [[Tmux]] session on the host that you&#039;re connecting to. This way, if the connection is dropped for any reason, the Tmux session will automatically detach on the host and will continue running so that you can reattach it at a later time when you&#039;ve connected again.&lt;br /&gt;
&lt;br /&gt;
==Further Information==&lt;br /&gt;
* [https://www.openssh.com/ OpenSSH]&lt;br /&gt;
* [https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse OpenSSH on Windows]&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13396</id>
		<title>MonthlyMaintenanceWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13396"/>
		<updated>2026-09-18T00:53:22Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HelpDesk | UMIACS staff]] takes a monthly maintenance window to patch and reboot all UMIACS-supported hosts and services.  This provides a way for staff to ensure security updates are installed and applied on the numerous different platforms and appliances that UMIACS runs.&lt;br /&gt;
&lt;br /&gt;
The window for each month is calculated by adding 9 days to [https://en.wikipedia.org/wiki/Patch_Tuesday Microsoft&#039;s Patch Tuesday] to allow for enough time to marshal patches released that month from Microsoft, Red Hat, Apple, and other OS and application vendors and have enough time to get systems prepared to reboot.  This translates to the window being on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month.  The window lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Nexus]] will always have a reservation in place from 4:45pm-8pm on the day of the upcoming window to prevent jobs from being scheduled on compute nodes. The 15-minute addition before the start of the window is to allow jobs to fully end. Any job submitted before the reservation begins that has a time limit that would run into the reservation will be held until at least the end of the reservation - 8pm on the day of the window. This is to prevent issues with jobs failing to end properly causing delays in work we have scheduled during the window.&lt;br /&gt;
&lt;br /&gt;
A list of upcoming maintenance windows is as follows, with the next one in bold. Again, the window is on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month, and lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* October 22nd 2026&lt;br /&gt;
* November 19th 2026&lt;br /&gt;
* December 17th 2026&lt;br /&gt;
&lt;br /&gt;
==Archives==&lt;br /&gt;
* January 17th 2013 - BEGIN time of 8pm-12am for this window through February 20th 2020&lt;br /&gt;
* February 21st 2013&lt;br /&gt;
* March 21st 2013&lt;br /&gt;
* April 18th 2013&lt;br /&gt;
* May 23rd 2013&lt;br /&gt;
* June 20th 2013&lt;br /&gt;
* July 18th 2013&lt;br /&gt;
* August 22nd 2013&lt;br /&gt;
* September 19th 2013&lt;br /&gt;
* October 17th 2013&lt;br /&gt;
* December 19th 2013&lt;br /&gt;
* January 23rd 2014&lt;br /&gt;
* February 20th 2014&lt;br /&gt;
* March 20th 2014&lt;br /&gt;
* April 17th 2014&lt;br /&gt;
* May 22nd 2014&lt;br /&gt;
* June 19th 2014&lt;br /&gt;
* July 17th 2014&lt;br /&gt;
* August 21st 2014&lt;br /&gt;
* September 18th 2014&lt;br /&gt;
* October 23rd 2014&lt;br /&gt;
* November 20th 2014&lt;br /&gt;
* December 18th 2014&lt;br /&gt;
* January 22nd 2015&lt;br /&gt;
* February 19th 2015&lt;br /&gt;
* March 19th 2015&lt;br /&gt;
* May 21st 2015&lt;br /&gt;
* June 18th 2015&lt;br /&gt;
* July 23rd 2015&lt;br /&gt;
* August 20th 2015&lt;br /&gt;
* September 17th 2015&lt;br /&gt;
* October 22nd 2015&lt;br /&gt;
* November 19th 2015&lt;br /&gt;
* December 17th 2015&lt;br /&gt;
* January 21st 2016&lt;br /&gt;
* February 18th 2016&lt;br /&gt;
* March 12th 2016 (Adjusted date for AVW power outage)&lt;br /&gt;
* April 21st 2016&lt;br /&gt;
* May 19th 2016&lt;br /&gt;
* June 23rd 2016&lt;br /&gt;
* July 21st 2016&lt;br /&gt;
* August 18th 2016&lt;br /&gt;
* September 22nd 2016&lt;br /&gt;
* October 20th 2016&lt;br /&gt;
* November 17th 2016&lt;br /&gt;
* December 22nd 2016&lt;br /&gt;
* January 19th 2017&lt;br /&gt;
* February 23rd 2017&lt;br /&gt;
* March 23rd 2017&lt;br /&gt;
* April 20th 2017&lt;br /&gt;
* May 18th 2017&lt;br /&gt;
* June 22nd 2017&lt;br /&gt;
* July 20th 2017&lt;br /&gt;
* August 17th 2017&lt;br /&gt;
* September 21st 2017&lt;br /&gt;
* October 19th 2017&lt;br /&gt;
* December 21st 2017&lt;br /&gt;
* January 18th 2018&lt;br /&gt;
* February 22nd 2018&lt;br /&gt;
* March 22nd 2018&lt;br /&gt;
* April 19th 2018&lt;br /&gt;
* May 17th 2018&lt;br /&gt;
* June 21st 2018&lt;br /&gt;
* July 19th 2018&lt;br /&gt;
* August 23rd 2018&lt;br /&gt;
* September 20th 2018&lt;br /&gt;
* October 18th 2018&lt;br /&gt;
* December 20th 2018&lt;br /&gt;
* January 24th 2019&lt;br /&gt;
* February 21st 2019&lt;br /&gt;
* April 18th 2019&lt;br /&gt;
* May 23rd 2019&lt;br /&gt;
* June 20th 2019&lt;br /&gt;
* July 18th 2019&lt;br /&gt;
* August 22nd 2019&lt;br /&gt;
* September 19th 2019&lt;br /&gt;
* October 17th 2019&lt;br /&gt;
* November 21st 2019&lt;br /&gt;
* December 19th 2019&lt;br /&gt;
* January 23rd 2020&lt;br /&gt;
* February 20th 2020&lt;br /&gt;
* April 23rd 2020 - BEGIN time of 5pm-7pm for this window through August 19th 2021&lt;br /&gt;
* June 18th 2020&lt;br /&gt;
* July 23rd 2020&lt;br /&gt;
* August 20th 2020&lt;br /&gt;
* September 17th 2020&lt;br /&gt;
* October 22nd 2020&lt;br /&gt;
* November 19th 2020&lt;br /&gt;
* December 17th 2020&lt;br /&gt;
* January 21st 2021&lt;br /&gt;
* February 18th 2021&lt;br /&gt;
* March 25th 2021 (Adjusted date for extended Spring Break)&lt;br /&gt;
* April 22nd 2021&lt;br /&gt;
* May 20th 2021&lt;br /&gt;
* June 17th 2021&lt;br /&gt;
* July 22nd 2021&lt;br /&gt;
* August 19th 2021&lt;br /&gt;
* September 23rd 2021 - BEGIN time of 5pm-8pm for this window and all others below&lt;br /&gt;
* October 21st 2021&lt;br /&gt;
* November 18th 2021&lt;br /&gt;
* January 20th 2022&lt;br /&gt;
* February 17th 2022&lt;br /&gt;
* March 24th 2022 (Adjusted date for Spring Break)&lt;br /&gt;
* April 21st 2022&lt;br /&gt;
* May 19th 2022&lt;br /&gt;
* June 23rd 2022&lt;br /&gt;
* July 21st 2022&lt;br /&gt;
* August 18th 2022&lt;br /&gt;
* September 22nd 2022&lt;br /&gt;
* October 20th 2022&lt;br /&gt;
* November 17th 2022&lt;br /&gt;
* January 19th 2023&lt;br /&gt;
* February 23rd 2023&lt;br /&gt;
* April 20th 2023&lt;br /&gt;
* May 18th 2023&lt;br /&gt;
* June 22nd 2023&lt;br /&gt;
* July 20th 2023&lt;br /&gt;
* August 17th 2023&lt;br /&gt;
* September 21st 2023&lt;br /&gt;
* October 19th 2023&lt;br /&gt;
* December 20th 2023 (Adjusted date for early Winter Break)&lt;br /&gt;
* January 18th 2024&lt;br /&gt;
* February 22nd 2024&lt;br /&gt;
* March 21st 2024&lt;br /&gt;
* April 18th 2024&lt;br /&gt;
* May 23th 2024&lt;br /&gt;
* June 20th 2024&lt;br /&gt;
* July 18th 2024&lt;br /&gt;
* August 22nd 2024&lt;br /&gt;
* September 19th 2024&lt;br /&gt;
* October 17th 2024&lt;br /&gt;
* November 21st 2024&lt;br /&gt;
* December 19th 2024&lt;br /&gt;
* January 23rd 2025&lt;br /&gt;
* February 20th 2025&lt;br /&gt;
* March 20th 2025&lt;br /&gt;
* April 17th 2025&lt;br /&gt;
* May 22nd 2025&lt;br /&gt;
* June 19th 2025&lt;br /&gt;
* July 17th 2025&lt;br /&gt;
* August 21st 2025&lt;br /&gt;
* September 18th 2025&lt;br /&gt;
* October 23rd 2025&lt;br /&gt;
* November 20th 2025&lt;br /&gt;
* December 18th 2025&lt;br /&gt;
* January 22nd 2026&lt;br /&gt;
* February 19th 2026&lt;br /&gt;
* March 19th 2026&lt;br /&gt;
* April 23rd 2026&lt;br /&gt;
* May 28th 2026 (Adjusted date for CIO-imposed network change freeze)&lt;br /&gt;
* June 18th 2026&lt;br /&gt;
* July 23rd 2026&lt;br /&gt;
* August 20th 2026&lt;br /&gt;
* September 17th 2026&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=WindowsServicing&amp;diff=13395</id>
		<title>WindowsServicing</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=WindowsServicing&amp;diff=13395"/>
		<updated>2026-09-16T18:06:22Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Updating */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Windows]] periodically releases &amp;quot;feature updates&amp;quot; that are designed to bring a large set of new features to all machines that can run Windows. They are typically released annually by Microsoft.&lt;br /&gt;
&lt;br /&gt;
At UMIACS, we release these feature updates to be installed on all UMIACS-supported Windows desktops as well as Enterprise supported laptops and home machines via our [[Windows Patch Management]]. We typically release feature updates to be installed several months after Microsoft releases them to the general public to ensure that the targeted release is compatible with all software that we run.&lt;br /&gt;
&lt;br /&gt;
==Current Feature Updates at UMIACS==&lt;br /&gt;
The current feature updates we deploy at UMIACS are:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!OS Version&lt;br /&gt;
!Feature Update&lt;br /&gt;
|-&lt;br /&gt;
|Windows 11&lt;br /&gt;
|25H2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We deployed the current Windows 11 feature update on April 15th, 2026. For a comprehensive list of what is new in this feature update, please see Microsoft&#039;s documentation:&lt;br /&gt;
* 11: https://learn.microsoft.com/en-us/windows/whats-new/whats-new-windows-11-version-25h2&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows 10 reached end of support on October 14th, 2025.&#039;&#039;&#039; If you still have a university-owned computer running Windows 10, please upgrade it to Windows 11 ASAP. Please [[HelpDesk | contact staff]] if help is needed.&lt;br /&gt;
&lt;br /&gt;
==Updating==&lt;br /&gt;
Our [[Windows Patch Management]] automatically installs feature updates when we release them to UMIACS-managed devices. You will receive a notification to restart to install the feature update in the same way that other patches are installed. Please see that page for more details.&lt;br /&gt;
&lt;br /&gt;
If for some reason your device is not automatically updated to the feature update mentioned above within a month or so of us releasing it, you can go to Windows Update on your device to see if it is available there and download/install it there if so. An example of what this might look like:&lt;br /&gt;
&lt;br /&gt;
[[File:Windows_Feature_Update.jpg|600px]]&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Windows_Feature_Update.jpg&amp;diff=13394</id>
		<title>File:Windows Feature Update.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:Windows_Feature_Update.jpg&amp;diff=13394"/>
		<updated>2026-09-16T18:04:48Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Orders&amp;diff=13393</id>
		<title>Orders</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Orders&amp;diff=13393"/>
		<updated>2026-09-11T15:39:29Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following pages outline the procedures and best practices for creating and requesting orders.&lt;br /&gt;
&lt;br /&gt;
=Requesting UMIACS Orders=&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:150%&amp;quot;&amp;gt;&#039;&#039;&#039;Before proceeding&#039;&#039;&#039;: If the Driver Worktag / KFS account you plan on charging is owned by the Computer Science Department, please instead [https://helpdesk.cs.umd.edu/faq/iribe/equipment-peripherals consult their FAQ] for ordering the equipment you want.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Important Considerations==&lt;br /&gt;
* Verbosity is always preferred to lack of critical details. &lt;br /&gt;
* Ticket descriptions should contain a list of specific items being ordered (provide direct links) unless you&#039;re attaching an official quote. Please do not include wishlists or links to carts.&lt;br /&gt;
* If priority shipping is required, please include that in the &amp;lt;b&amp;gt;subject&amp;lt;/b&amp;gt; of the email.&lt;br /&gt;
&lt;br /&gt;
==Option 1: Using the web form==&lt;br /&gt;
Fill out the form [https://businessoffice.umiacs.umd.edu/form/order here] and click Submit. This will automatically generate a ticket for staff to action on.&lt;br /&gt;
&lt;br /&gt;
Please note that you need to be connected to either the &#039;&#039;wired campus network&#039;&#039; or the &#039;&#039;[https://terpware.umd.edu/Windows/Title/4010 campus VPN]&#039;&#039; to access this form.&lt;br /&gt;
&lt;br /&gt;
==Option 2: Sending email to staff directly==&lt;br /&gt;
&amp;lt;strong&amp;gt;We offer a simple [[Media:Ordering_Form.pdf|Form]] that you can fill out and send to orders@umiacs.umd.edu along with any applicable quote(s).&amp;lt;/strong&amp;gt;  Please make sure that you CC the PI or include the email confirmation for any accounts that require committee approval (e.g., RQS).&lt;br /&gt;
&lt;br /&gt;
Otherwise, please follow these instructions.&lt;br /&gt;
&lt;br /&gt;
* Please CC the PI for the Driver Worktag / KFS account you want to charge.&lt;br /&gt;
* &amp;lt;b&amp;gt;In the body of your email:&amp;lt;/b&amp;gt;&lt;br /&gt;
** Specify the Driver Worktag / KFS account to charge.&lt;br /&gt;
** Specify the items using links or attached quotes and specify the amount of each item. &#039;&#039;&#039;Please do not use wishlists or carts.&#039;&#039;&#039;&lt;br /&gt;
*** Quotes must include any applicable shipping costs.&lt;br /&gt;
*** If ordering from numerous vendors:&lt;br /&gt;
**** Send one email per vendor. Otherwise, UMIACS staff will separate your request into different emails/[[Jira]] tickets after the fact.&lt;br /&gt;
**** Specify if you want priority shipping per vendor. If no shipping speed is selected, the lowest cost shipping that still provides tracking will be used.&lt;br /&gt;
** Specify a brief rationale for the purchase, i.e., why you are requesting it be bought. If on sponsored funds such as federal grants, the description should also provide how the purchase relates to the purpose of the project.&lt;br /&gt;
&lt;br /&gt;
==Option 3: Submitting order within [[Jira]] yourself==&lt;br /&gt;
Log into the [[Jira]] web interface at https://intranet.umiacs.umd.edu/jira/servicedesk/customer/portals and select the UMIACS Orders option.&lt;br /&gt;
&lt;br /&gt;
You will be presented with the default ordering screen. Here is a very fictitious example:&amp;lt;br/&amp;gt;&lt;br /&gt;
Please note that Summary, Reporter, Account and PI are mandatory fields.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:ORDERS_main_new.png|465px|600px|alt=Screenshot of an example of Jira of a default ordering screen with all the required information filled out]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Requester&amp;lt;/b&amp;gt; &lt;br /&gt;
** If the order is being requested by CBCB, IMD, MC2, QuICS, or RQS, prepend the summary with [CBCB], [IMD], [MC2], [QuICS], or [RQS] respectively.&lt;br /&gt;
* &amp;lt;b&amp;gt;Summary&amp;lt;/b&amp;gt; &lt;br /&gt;
** This should be of the format &amp;quot;&amp;lt;tt&amp;gt;Vendor | Brief Description&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
** If the order &amp;lt;b&amp;gt;must&amp;lt;/b&amp;gt; be placed today, this will instead be &amp;quot;&amp;lt;tt&amp;gt;PRIORITY TODAY | Vendor | Brief Description&amp;lt;/tt&amp;gt;&amp;quot;.&lt;br /&gt;
* &amp;lt;b&amp;gt;Account&amp;lt;/b&amp;gt; &lt;br /&gt;
** This should be the Driver Worktag / KFS account to be charged. Please be as specific as possible. Account number is preferred, but if you don&#039;t know it, a specific description is OK (e.g., don&#039;t say &amp;quot;DRIF&amp;quot; since there are multiple DRIF accounts, instead say &amp;quot;UMIACS DRIF&amp;quot;, or &amp;quot;CBCB DRIF&amp;quot;, etc.)&lt;br /&gt;
** In the event that a single order has multiple accounts, list them all and specify which items are being charged to what accounts (or what percent of an item is being charged to an account) in the description. &lt;br /&gt;
* &amp;lt;b&amp;gt;PI&amp;lt;/b&amp;gt;&lt;br /&gt;
** A PI (Principal Adviser) who has approved the purchase on the Driver Worktag / KFS account. &lt;br /&gt;
** In some cases, multiple PIs can charge to a single Driver Worktag / KFS account.&lt;br /&gt;
* &amp;lt;b&amp;gt;Description&amp;lt;/b&amp;gt;&lt;br /&gt;
** Provide a description of what you want to buy or provide it in a comment before you submit your order.&lt;br /&gt;
** Provide the purpose of the purchase. If on sponsored funds such as federal grants, the description should also provide how the purchase relates to the purpose of the project.&lt;br /&gt;
** When possible, provide a link to the item to be purchased.&lt;br /&gt;
** When purchasing through Amazon or a site that provides fulfillment for third party vendors, please state the specific vendor that is providing the item and at what price. This is to prevent errors caused by ordering from a different vendor when the site auto-updates.&lt;br /&gt;
** It&#039;s good to be polite with your description. ex - &amp;lt;tt&amp;gt;&amp;quot;Hi, please purchase $requestedItems. Here are the links/relevant information: $relevantInformation. Thanks!&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=When Staff Receives the Order=&lt;br /&gt;
* As long as the PI is CC&#039;d and all needed information is present, we will go ahead and process the order.&lt;br /&gt;
* You will receive an email to pick up the order(s) when it arrives.&lt;br /&gt;
** &#039;&#039;&#039;If you are sending someone other than yourself, the PI, or someone already CC&#039;d on the ORDERS ticket to pickup the items&#039;&#039;&#039;: Please let us know who that person is prior to having them arrive for pickup. Otherwise, we may attempt to contact you at time of pickup to verify their identity/association with the order.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/ClusterOSUpgrade&amp;diff=13392</id>
		<title>Nexus/ClusterOSUpgrade</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/ClusterOSUpgrade&amp;diff=13392"/>
		<updated>2026-09-09T15:41:27Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
UMIACS Technical Staff has finished upgrading the operating system version on all [[Nexus]] cluster nodes from [[RHEL | Red Hat Enterprise Linux (RHEL)]] 8 to 9 as of Thursday 08/06/2026.&lt;br /&gt;
&lt;br /&gt;
[https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9 RHEL9] is still in the Full Support phase of its life cycle and introduces a newer major Linux kernel version and newer [https://www.gnu.org/software/libc glibc] version, improving compatibility with many newer software applications.&lt;br /&gt;
&lt;br /&gt;
==Scheduling==&lt;br /&gt;
&#039;&#039;&#039;Upgrades for all cluster nodes have finished as of Thursday 08/06/2026.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Interoperability==&lt;br /&gt;
===Software and Modules===&lt;br /&gt;
Please transition your [[PythonVirtualEnv | virtual environments]], workflows, etc. to work with RHEL9 as soon as possible. You can use the submission nodes that you have access to for transitioning and light testing - as always, [[Nexus/Submission_Node_Policy | please do not run any computationally intensive processes on these nodes]]. They are intended to be hosts for configuring environments/workflows and submitting jobs only. If you need to do more involved testing, please schedule a job for this.&lt;br /&gt;
&lt;br /&gt;
The [[Modules | module tree]] for RHEL9 is populated with a large number of the same modules that are available in the RHEL8 module tree, although specific modules may have different versions available in the RHEL9 tree as compared to the RHEL8 tree. If you have a dependency on a specific version of a module that is not available in the RHEL9 tree, please [[HelpDesk | contact staff]] and we can get one created.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13391</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13391"/>
		<updated>2026-09-02T21:03:52Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using bridge hosts - host(s) for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.  &lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of networks that can be associated with a given cyber range.  One secondary network that many cyber ranges may have is one to access out-of-band management devices such as [https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface baseboard management controllers (BMCs) through IPMI] for bare metal servers in the range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are connected, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge hosts provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command to start this tunnel, providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13390</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13390"/>
		<updated>2026-09-02T21:02:46Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using bridge hosts - host(s) for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.  &lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of networks that can be associated with a given cyber range.  One secondary network that many cyber ranges may have is one to access out-of-band management devices such as [https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface baseboard management controllers (BMCs) through IPMI] for bare metal servers in the range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are connected, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13389</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13389"/>
		<updated>2026-09-02T21:02:13Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using bridge hosts - host(s) for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.  &lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of networks that can be associated with a given cyber range.  One secondary network that many cyber ranges may have is one to access out-of-band management devices such as [https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface baseboard management controllers (BMCs) through IPMI] for bare metal servers in the range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13388</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13388"/>
		<updated>2026-09-02T21:01:33Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using bridge hosts - host(s) for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.  &lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of networks that can be associated with a given cyber range.  One secondary network that many cyber ranges may have is one to access out-of-band management devices such as [https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface baseboard management controllers (BMCs)] for bare metal servers in the range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13387</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13387"/>
		<updated>2026-09-02T21:00:53Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using bridge hosts - host(s) for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.  &lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of networks that can be associated with a given cyber range.  One secondary network that many cyber ranges may have is one to access out-of-band management devices such as baseboard management controllers (BMCs) for bare metal servers in the range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13386</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13386"/>
		<updated>2026-09-02T21:00:39Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using bridge hosts - host(s) for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.  &lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of networks that can be associated with a given cyber range.  One common secondary network that many cyber ranges may have is one to access out-of-band management devices such as baseboard management controllers (BMCs) for bare metal servers in the range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13385</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13385"/>
		<updated>2026-09-02T20:59:00Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the resources with a cyber range consisting of one or more internal networks.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using a bridge host for each cyber range that can be used to access the networks, and thus devices, within that cyber range.  Devices within a given cyber range do not have direct network access to outside that cyber range.  There is no limit to the number of networks that can be associated with a given cyber range.  One common secondary network that many cyber ranges may have is one to access out-of-band management devices such as baseboard management controllers (BMCs) for bare metal servers in the range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.&lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13384</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13384"/>
		<updated>2026-09-02T20:53:56Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the networks with a cyber range.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using a bridge host for each cyber range that can be used to access the devices within that cyber range.  The devices within a given cyber range can have multiple networks associated with them, including a network that provides access to out-of-band management devices such as baseboard management controllers (BMCs).  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.&lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you must be connected to either the UMIACS wired network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data onto a device within a cyber range, you can use the bridge host for that cyber range as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host for a cyber range, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide [[Remote Desktop]] access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13383</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13383"/>
		<updated>2026-09-02T20:49:45Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the networks with a cyber range.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using a bridge host for each cyber range that can be used to access the devices within that cyber range.  The devices within a given cyber range can have multiple networks associated with them, including a network that provides access to out-of-band management devices such as baseboard management controllers (BMCs).  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.&lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you first need to be connected to the UMIACS network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the [[#Remote Desktop Access | Remote Desktop Access]] section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data, you can use the bridge host as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This directory is not backed up and should not be used to hold primary copies of any data that is critical.]]  If the scratch space on a bridge host becomes full, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide remote desktop access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13382</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13382"/>
		<updated>2026-09-02T20:46:02Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the networks with a cyber range.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using a bridge host for each cyber range that can be used to access the devices within that cyber range.  The devices within a given cyber range can have multiple networks associated with them, including a network that provides access to out-of-band management devices such as baseboard management controllers (BMCs).  Devices within a given cyber range do not have direct network access to outside that cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.&lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of all cyber ranges.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you first need to be connected to the UMIACS network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
After connecting, you can SSH to the bridge host for a cyber range (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in, you can now jump to any internal host in that cyber range over SSH.  If you need to access a graphical interface, see the Remote Desktop Access section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data, you can use the bridge host as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This data is not backed up and should not be used as a primary copy of any data that is critical.]]  If the space is fully allocated, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by each cyber range&#039;s bridge host to that internal cyber range&#039;s networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide remote desktop access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridge host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13381</id>
		<title>CyberRange</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CyberRange&amp;diff=13381"/>
		<updated>2026-09-02T20:42:22Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To limit access for a set of resources in UMIACS, we may protect the networks with a cyber range.&lt;br /&gt;
&lt;br /&gt;
This is achieved by using a bridge host that users can use to access the devices within the cyber range.  The devices within the cyber range can have multiple networks including a network that provides access to out of band management devices.  Devices within the cyber range do not have direct network access to outside the cyber range.  All data transfer for a given cyber range must be staged through the bridge host for that cyber range.&lt;br /&gt;
&lt;br /&gt;
No computational intensive activities are to be executed on the bridge hosts.  Processes will be killed as need be to maintain the availability and access of the cyber range.&lt;br /&gt;
&lt;br /&gt;
=Access=&lt;br /&gt;
To access cyber range bridge hosts in UMIACS, you need to be connected to the UMIACS network or [[VPN | UMD&#039;s GlobalProtect VPN]].&lt;br /&gt;
&lt;br /&gt;
Then you would need to ssh to the bridge host (eg. &amp;lt;code&amp;gt;ssh username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;) and provide your credentials and MFA to connect.  Once you are logged in you can now jump to any internal host in the range over SSH.  If you need to access a graphical interface, see the Remote Desktop Access section below.&lt;br /&gt;
&lt;br /&gt;
If you need to stage data, you can use the bridge host as a [[SSH_Jumphosts | SSH jump host]].  Here are some examples using &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;scp -J user@bridge_host /path/to/local/file user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;rsync -avz -e &amp;quot;ssh -J user@bridge_host&amp;quot; /path/to/local/folder/ user@target_server:/path/to/destination/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Temporary Storage=&lt;br /&gt;
If data needs to be temporarily stored on the bridge host, it can be stored in &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;.  [[FilesystemDataStorage#UNIX_Filesystem_Storage | This data is not backed up and should not be used as a primary copy of any data that is critical.]]  If the space is fully allocated, the Technical Staff reserve the right to clear out the space as necessary to support the activities of the cyber range. &lt;br /&gt;
&lt;br /&gt;
=Network Services=&lt;br /&gt;
Network services like DNS and DHCP are provided by the bridge host to the internal cyber range networks.&lt;br /&gt;
&lt;br /&gt;
=Remote Desktop Access=&lt;br /&gt;
Bridge host(s) provide remote desktop access locally that can be used with a simple SSH port forwarding tunnel.  In a local terminal window, you can run the following command providing your credentials and MFA.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -L 33389:localhost:3389 username@bridge_host.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then use your local RDP client to connect to &amp;lt;code&amp;gt;bridge_host.umiacs.umd.edu:33389&amp;lt;/code&amp;gt; and you will be logged into a console session on the bridging host.  You can disconnect and re-connect to the console.&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=13368</id>
		<title>SLURM/JobSubmission</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=13368"/>
		<updated>2026-08-28T15:26:13Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Job Submission=&lt;br /&gt;
SLURM offers a variety of ways to run jobs. It is important to understand the different options available and how to request the resources required for a job in order for it to run successfully. All job submission should be done from submit nodes; any computational code should be run in a job allocation on compute nodes. The following commands outline how to allocate resources on the compute nodes and submit processes to be run on the allocated nodes.&lt;br /&gt;
&lt;br /&gt;
The cluster that everyone with a [[Accounts#UMIACS_Account | UMIACS account]] has access to is [[Nexus]]. Please visit the Nexus page for instructions on how to connect to your assigned submit nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computationally intensive processes run on submission nodes will be terminated. Please submit jobs to be scheduled on compute nodes for this purpose.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For details on how SLURM decides how to schedule jobs when multiple jobs are waiting in a scheduler&#039;s queue, please see [[SLURM/Priority]].&lt;br /&gt;
&lt;br /&gt;
==srun==&lt;br /&gt;
The &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; command is used to run a process on the compute nodes in the cluster. If you pass it a normal shell command (or command that executes a script), it will submit a job to run that shell command/script on a compute node and then return. &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; accepts many command line options to specify the resources required by the command passed to it. Some common command line arguments are listed below and full documentation of all available options is available in the man page for &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, which can be accessed by running &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --qos=default --mem=100mb --time=1:00:00 bash -c &#039;echo &amp;quot;Hello World from&amp;quot; `hostname`&#039;&lt;br /&gt;
Hello World from tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to understand that &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is an interactive command. By default input to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is broadcast to all compute nodes running your process and output from the compute nodes is redirected to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;. This behavior can be changed; however, &#039;&#039;&#039;srun will always wait for the command passed to finish before exiting, so if you start a long running process and end your terminal session, your process will stop running on the compute nodes and your job will end&#039;&#039;&#039;. To run a non-interactive submission that will remain running after you logout, you will need to wrap your &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; commands in a batch script and submit it with [[#sbatch | sbatch]].&lt;br /&gt;
&lt;br /&gt;
===Common srun Arguments===&lt;br /&gt;
* &amp;lt;code&amp;gt;--job-name=&amp;lt;JOBNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be named &amp;lt;JOBNAME&amp;gt;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem=1g&amp;lt;/code&amp;gt; &#039;&#039;Requests 1GB of memory for your job, if no unit is given MB is assumed&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--ntasks=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 &amp;quot;tasks&amp;quot; which map to cores on a CPU for your job; if passed to srun, runs the given command concurrently on each core&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus-per-task=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 CPU cores be allocated per task for your job&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodes=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 nodes be allocated to your job; if passed to srun, runs the given command concurrently on each node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodelist=&amp;lt;NODENAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests to run your job on the &amp;lt;NODENAME&amp;gt; node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--time=dd-hh:mm:ss&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run for dd days, hh hours, mm minutes, and ss seconds&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--error=&amp;lt;ERRNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Redirects stderr for your job to the &amp;lt;ERRNAME&amp;gt; file&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition=&amp;lt;PARTITIONNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run in the &amp;lt;PARTITIONNAME&amp;gt; partition&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos=&amp;lt;QOSNAME&amp;gt;default&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run with the &amp;lt;QOSNAME&amp;gt; QOS, to see the available QOS options on a cluster, run&#039;&#039; &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--account=&amp;lt;ACCOUNTNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job runs under the &amp;lt;ACCOUNTNAME&amp;gt; Slurm account, different accounts have different available partitions/QOS&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--output=&amp;lt;OUTNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Redirects stdout for your job to the &amp;lt;OUTNAME&amp;gt; file&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--requeue&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be automatically requeued if it is preempted&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--exclusive&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be the only one running on the node(s) it is assigned to. This requires that your job be allocated all of the resources on the node(s). The scheduler &#039;&#039;&#039;does not&#039;&#039;&#039; automatically give your job all of the node&#039;s/nodes&#039; resources, however, so if you need more than the default, you still need to request these with&#039;&#039; &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; &#039;&#039;and&#039;&#039; &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interactive Shell Sessions===&lt;br /&gt;
An interactive shell session on a compute node can be useful for debugging or developing code that isn&#039;t ready to be run as a batch job. To get an interactive shell on a node, use &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;--pty&amp;lt;/code&amp;gt; argument to invoke a shell:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=default --mem=1g --time=01:00:00 bash&lt;br /&gt;
$ hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please do not leave interactive shells running for long periods of time when you are not working. This blocks resources from being used by everyone else.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==salloc==&lt;br /&gt;
The &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; command can also be used to request resources be allocated without needing a batch script. Running salloc with a list of resources will allocate the resources you requested, create a job, and drop you into a subshell with the environment variables necessary to run commands in the newly created job allocation. When your time is up or you exit the subshell, your job allocation will be relinquished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ salloc --qos=default -N 1 --mem=2g --time=01:00:00&lt;br /&gt;
salloc: Granted job allocation 159&lt;br /&gt;
$ srun /usr/bin/hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
$ exit&lt;br /&gt;
exit&lt;br /&gt;
salloc: Relinquishing job allocation 159&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please be careful when using salloc - any commands not invoked with srun will be run locally on the submission node.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==sbatch==&lt;br /&gt;
The &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; command allows you to write a batch script to be submitted and run non-interactively on the compute nodes. To run a simple Hello World command on the compute nodes you could write a file, helloWorld.sh with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
srun bash -c &#039;echo Hello World from `hostname`&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you need to submit the script with sbatch and request resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch --qos=default --mem=1g --time=1:00:00 helloWorld.sh&lt;br /&gt;
Submitted batch job 121&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SLURM will return a job number that you can use to check the status of your job with squeue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
               121      tron helloWor username  R       0:01      1 tron32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Advanced Batch Scripts====&lt;br /&gt;
You can also write a batch script with all of your resources/options defined in the script itself. This is useful for jobs that need to be run tens/hundreds/thousands of times. You can then handle any necessary environment setup and run commands on the resources you requested by invoking commands with srun. The srun commands can also be more complex and be told to only use portions of your entire job allocation - each of these distinct srun commands makes up one &amp;quot;job step&amp;quot;. The batch script will be run on the first node allocated as part of your job allocation and each job step will be run on whatever resources you tell them to.&lt;br /&gt;
&lt;br /&gt;
In the following example, we have a batch job that will request 2 nodes in the cluster. We then load a specific version of [[Python]] into our environment and submit two job steps, each one using one node. Since srun blocks until the command finishes by default, we use the &#039;&amp;amp;&#039; operator to background the process so that both job steps can run at once; however, this means that we then need to use the wait command to block processing until all background processes have finished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Lines that begin with #SBATCH specify commands to be used by SLURM for scheduling. These MUST be above any non-#SBATCH lines in the script to take effect.&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=helloWorld                                        # set job name&lt;br /&gt;
#SBATCH --output=helloWorld.out.%j                                   # indicates a file to redirect STDOUT to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --error=helloWorld.err.%j                                    # indicates a file to redirect STDERR to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --time=00:05:00                                              # how long you would like your job to run; format=dd-hh:mm:ss&lt;br /&gt;
#SBATCH --account=nexus                                              # set account, this determines which partitions and QOSes are available for your job&lt;br /&gt;
#SBATCH --partition=tron                                             # set partition, this determines what nodes are available for your job&lt;br /&gt;
#SBATCH --qos=default                                                # set QOS, this determines how many resources can be requested within your job, and for how long&lt;br /&gt;
#SBATCH --nodes=2                                                    # number of nodes to allocate for your job&lt;br /&gt;
#SBATCH --ntasks=4                                                   # request 4 cpu cores be reserved for your job total&lt;br /&gt;
#SBATCH --ntasks-per-node=2                                          # request 2 cpu cores be reserved per node&lt;br /&gt;
#SBATCH --mem=1g                                                     # memory required by job; if unit is not specified MB will be assumed. for multi-node jobs, this argument allocates this much memory *per node*&lt;br /&gt;
&lt;br /&gt;
srun --nodes=1 --mem=512m bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;    # use srun to invoke commands within your job; using an &#039;&amp;amp;&#039;&lt;br /&gt;
srun --nodes=1 --mem=512m bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;    # will background the process allowing them to run concurrently&lt;br /&gt;
wait                                                                 # wait for any background processes to complete&lt;br /&gt;
&lt;br /&gt;
# Once the end of the batch script is reached, your job allocation will be revoked.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another useful thing to know is that you can pass additional arguments into your sbatch scripts on the command line and reference them as &amp;lt;code&amp;gt;${1}&amp;lt;/code&amp;gt; for the first argument and so on.&lt;br /&gt;
&lt;br /&gt;
====More Examples====&lt;br /&gt;
* [[SLURM/ArrayJobs]]&lt;br /&gt;
&lt;br /&gt;
==scancel==&lt;br /&gt;
The &amp;lt;code&amp;gt;scancel&amp;lt;/code&amp;gt; command can be used to cancel your own job allocations or job steps that are no longer needed. It can be passed individual job IDs or an option to delete all of your jobs or jobs that meet certain criteria.&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255&amp;lt;/code&amp;gt;     &#039;&#039;cancel job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255.3&amp;lt;/code&amp;gt;     &#039;&#039;cancel job step 3 of job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel --user=username --partition=tron&amp;lt;/code&amp;gt;    &#039;&#039;cancel all jobs for username in the tron partition; username must be your UMD directory ID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Identifying Resources and Features=&lt;br /&gt;
The &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; command can show you additional features of nodes in the cluster but you need to ask it to show some non-default options using a command like &amp;lt;code&amp;gt;sinfo -o &amp;quot;%40N %8c %8m %35f %35G&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -o &amp;quot;%40N %10c %10m %40f %32G&amp;quot;&lt;br /&gt;
NODELIST                                 CPUS       MEMORY     AVAIL_FEATURES                           GRES&lt;br /&gt;
cbcb[00-21]                              32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)&lt;br /&gt;
cbcb25                                   24         255278     rhel9,x86_64,Xeon,E5-2650,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
cbcb30                                   48         1157583    rhel9,x86_64,EPYC,EPYC-9475F             (null)&lt;br /&gt;
legacy00                                 48         125940     rhel9,x86_64,Zen,EPYC-7402               (null)&lt;br /&gt;
legacy[01-11,13-15,17-19]                12+        126117+    rhel9,x86_64,Xeon,E5-2620                (null)&lt;br /&gt;
legacy[20,42,50-51]                      24+        384270+    rhel9,x86_64,Xeon,E5-2680                (null)&lt;br /&gt;
legacy[37-40]                            64         512878     rhel9,x86_64,Zen,EPYC-7502               (null)&lt;br /&gt;
legacy[33-36,43-44]                      24         255150     rhel9,x86_64,Xeon,E5-2650                (null)&lt;br /&gt;
legacy41                                 8          61567      rhel9,x86_64,Zen,EPYC-7262               (null)&lt;br /&gt;
legacy45                                 44         1029404    rhel9,x86_64,Xeon,E5-2699                (null)&lt;br /&gt;
legacy[46-49]                            20         384271     rhel9,x86_64,Xeon,E5-2660                (null)&lt;br /&gt;
legacy[52-53]                            20         61739      rhel9,x86_64,Xeon,E5-2640                (null)&lt;br /&gt;
cbcb26                                   128        513243     rhel9,x86_64,Zen,EPYC-7763,Ampere        gpu:rtxa5000:7&lt;br /&gt;
cbcb27                                   64         255167     rhel9,x86_64,Zen,EPYC-7513,Ampere        gpu:rtxa6000:7&lt;br /&gt;
cbcb[28-29]                              32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8&lt;br /&gt;
tron[46-61]                              48         255225+    rhel9,x86_64,Zen,EPYC-7352,Ampere        gpu:rtxa5000:8&lt;br /&gt;
tron[06-09,12-15,21]                     16         126214+    rhel9,x86_64,Zen,EPYC-7302P,Ampere       gpu:rtxa4000:4&lt;br /&gt;
tron[10-11,16-20,34]                     16         126217     rhel9,x86_64,Zen,EPYC-7313P,Ampere       gpu:rtxa4000:4&lt;br /&gt;
tron[22-33,35-45]                        16         126214+    rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa4000:4&lt;br /&gt;
clip04                                   32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtx3090:4&lt;br /&gt;
clip11                                   16         126217     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa4000:4&lt;br /&gt;
clip13,cml30,vulcan[29-32,45]            32         255218+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:8&lt;br /&gt;
clip14                                   32         125964     rhel9,x86_64,Xeon,Gold-6226R,Ampere      gpu:rtxa5000:3&lt;br /&gt;
clip[05-06]                              24         126216     rhel9,x86_64,Zen,EPYC-7352,Ampere        gpu:rtxa6000:2&lt;br /&gt;
cml[17-28],gammagpu05                    32         255225+    rhel9,x86_64,Zen,EPYC-7282,Ampere        gpu:rtxa4000:8&lt;br /&gt;
cml33                                    64         1029019    rhel9,x86_64,Xeon,6448Y,Hopper           gpu:h100-sxm:4&lt;br /&gt;
cml38                                    128        2061422    rhel9,x86_64,Xeon,6776P,Blackwell        gpu:b300-sxm:8&lt;br /&gt;
cml31                                    32         384094     rhel9,x86_64,Zen,EPYC-9124,Ampere,Hopper gpu:a100:1,gpu:h100-nvl:1&lt;br /&gt;
cml32                                    64         512999     rhel9,x86_64,Zen,EPYC-7543,Ampere        gpu:a100:4&lt;br /&gt;
cml37                                    16         383918     rhel9,x86_64,Zen,EPYC-9124,Blackwell     gpu:rtx6000bw-mq:4&lt;br /&gt;
cml[00,02-03,06-07,09-11,13-16],tron[62- 32         351530+    rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:8&lt;br /&gt;
cml[04-05]                               32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:6&lt;br /&gt;
cml08                                    32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:7&lt;br /&gt;
cml12                                    32         383038     rhel9,x86_64,Xeon,4216,Turing,Ampere     gpu:rtx2080ti:7,gpu:rtxa4000:1&lt;br /&gt;
cml34                                    32         513260     rhel9,x86_64,Zen,EPYC-7313,Ada           gpu:l40s:8&lt;br /&gt;
cml[35-36],vulcan46                      128        2061187+   rhel9,x86_64,Xeon,8592+,Hopper           gpu:h200-sxm:8&lt;br /&gt;
gammagpu00                               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa5000:8&lt;br /&gt;
gammagpu[01-04,06-09],vulcan[33-37]      32         255170+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa5000:8&lt;br /&gt;
csd00,gammagpu[18-21]                    32         254883     rhel9,x86_64,Xeon,6526Y,Ada              gpu:l40s:4&lt;br /&gt;
clip12,gammagpu[10-17]                   16         126203+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:4&lt;br /&gt;
oasis[00-12,14-36,38]                    160        28114      rhel9,aarch64,Altra,Altra-80             (null)&lt;br /&gt;
quics00                                  128        1545009    rhel9,x86_64,Zen,EPYC-9534               (null)&lt;br /&gt;
tron[00,03]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:6&lt;br /&gt;
vulcan24                                 16         126216     rhel9,x86_64,Zen,EPYC-7282,Ampere        gpu:rtxa6000:4&lt;br /&gt;
legacygpu06                              20         255249     rhel9,x86_64,Xeon,E5-2699,Maxwell        gpu:gtxtitanx:4&lt;br /&gt;
tron[01-02]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8&lt;br /&gt;
tron[04-05]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:7&lt;br /&gt;
vulcan[38-44]                            32         255215     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa4000:8&lt;br /&gt;
legacygpu00                              20         255249     rhel9,x86_64,Xeon,E5-2650,Pascal         gpu:titanxp:4&lt;br /&gt;
legacygpu[02,07]                         20         255249+    rhel9,x86_64,Xeon,E5-2650,Maxwell        gpu:gtxtitanx:4&lt;br /&gt;
legacygpu[03-04]                         16         255268     rhel9,x86_64,Xeon,E5-2630,Maxwell        gpu:gtxtitanx:2&lt;br /&gt;
legacygpu05                              44         513193     rhel9,x86_64,Xeon,E5-2699,Pascal         gpu:gtx1080ti:4&lt;br /&gt;
legacygpu09                              32         255276     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:titanxpascal:3&lt;br /&gt;
legacygpu10                              32         255276     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:titanxpascal:1,gpu:titanxp:2&lt;br /&gt;
legacygpu11                              20         126255     rhel9,x86_64,Xeon,E5-2630,Pascal         gpu:gtx1080ti:3&lt;br /&gt;
legacygpu12                              20         126243     rhel9,x86_64,Xeon,E5-2630,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:2&lt;br /&gt;
legacygpu13                              8          255263     rhel9,x86_64,Xeon,E5-2623,Pascal         gpu:gtx1080ti:3&lt;br /&gt;
legacygpu[14,26-41]                      32         255258+    rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:gtx1080ti:8&lt;br /&gt;
legacygpu15                              32         383043     rhel9,x86_64,Xeon,6130,Pascal,Turing     gpu:rtx2080ti:5,gpu:gtx1080ti:3&lt;br /&gt;
legacygpu[16-17]                         20         189498     rhel9,x86_64,Xeon,4114,Turing            gpu:rtx2080ti:8&lt;br /&gt;
legacygpu18                              32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:7,gpu:p100:1&lt;br /&gt;
legacygpu[19,23]                         32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:7&lt;br /&gt;
legacygpu[20-22,24-25]                   32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:8&lt;br /&gt;
legacygpu42                              24         770126     rhel9,x86_64,Xeon,6146,Pascal            gpu:titanxp:10&lt;br /&gt;
tron[64,67]                              32         383028+    rhel9,x86_64,Xeon,4216,Turing,Ampere     gpu:rtx2080ti:7,gpu:rtx3070:1&lt;br /&gt;
brigid[16-17]                            48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)&lt;br /&gt;
vulcan23                                 32         383030     rhel9,x86_64,Xeon,4612,Turing            gpu:rtx2080ti:6&lt;br /&gt;
vulcan[27-28]                            56         770093     rhel9,x86_64,Xeon,8280,Turing            gpu:rtx2080ti:10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that all of the nodes shown by this may not necessarily be in a partition you are able to submit to.&lt;br /&gt;
&lt;br /&gt;
You can identify further specific information about a node using [[SLURM/ClusterStatus#scontrol | scontrol]] with various flags.&lt;br /&gt;
&lt;br /&gt;
There are also two command aliases developed by UMIACS staff to show various node information in aggregate. They are &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==show_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; command alias shows each node&#039;s name, number of CPUs, memory, {OS, CPU architecture, CPU type, GPU architecture (if the node has GPUs)} (as AVAIL_FEATURES), GRES (GPUs), and State. It essentially wraps the &amp;lt;tt&amp;gt;sinfo&amp;lt;/tt&amp;gt; command with some pre-determined output format options and shows each node on its own line, in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
To only view nodes in a specific partition, append &amp;lt;code&amp;gt;-p &amp;lt;partition name&amp;gt;&amp;lt;/code&amp;gt; to the command alias.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
brigid16             48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)                           idle&lt;br /&gt;
brigid17             48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)                           idle&lt;br /&gt;
...                  ...        ...        ...                                      ...                              ...&lt;br /&gt;
vulcan45             32         513250     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(specific partition)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes -p tron&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
tron00               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
tron01               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
...                  ...        ...        ...                                      ...                              ...&lt;br /&gt;
tron69               32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:8                  idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==show_available_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt; command alias takes zero or more arguments that correspond to Slurm constructs, resources, or features that you are looking to request a job with and tells you what nodes could &#039;&#039;&#039;theoretically&#039;&#039;&#039;[0,1] run a job with these arguments immediately. It assumes your job is a single-node job.&lt;br /&gt;
&lt;br /&gt;
These arguments are:&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;: Only include nodes in the specified partition(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified account(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified QoS(es).&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus&amp;lt;/code&amp;gt;: Only include nodes with at least this many CPUs free.&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;: Only include nodes with at least this much memory free. The default unit is MB if unspecified, but any of {K,M,G,T} can be suffixed to the number provided (will then be interpreted as KB, MB, GB, or TB, respectively).&lt;br /&gt;
* GRES-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains &#039;&#039;all&#039;&#039; of the specified GRES type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains &#039;&#039;any&#039;&#039; of the specified GRES type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--and-gres&amp;lt;/tt&amp;gt; if only one GRES type/quantity pairing is specified.&lt;br /&gt;
* GPU-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--gpus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains &#039;&#039;all&#039;&#039; of the specified GPU type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains &#039;&#039;any&#039;&#039; of the specified GPU type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--and-gpus&amp;lt;/tt&amp;gt; if only one GPU type/quantity pairing is specified.&lt;br /&gt;
* Feature-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--feature&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains &#039;&#039;all&#039;&#039; of the specified feature(s).&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains &#039;&#039;any&#039;&#039; of the specified feature(s). Functionally identical to &amp;lt;tt&amp;gt;--and-feature&amp;lt;/tt&amp;gt; if only one feature is specified.&lt;br /&gt;
&lt;br /&gt;
These arguments are also viewable by running &amp;lt;code&amp;gt;show_available_nodes -h&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your passed argument set does not contain any resource-based arguments (CPUs/RAM/GRES or GPUs), a node is defined as available if it has at least 1 CPU and 1MB of RAM available.&lt;br /&gt;
&lt;br /&gt;
If there are no nodes available that meet your passed argument set, you will receive the message &amp;lt;tt&amp;gt;There are no nodes that have currently free resources that meet this argument set.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Footnotes===&lt;br /&gt;
[0] - As of now, this command alias does not factor in resources occupied by jobs that could be preempted (based on the partition(s) passed to it, if present). This is something that we are working on implementing.&lt;br /&gt;
&lt;br /&gt;
[1] - This command alias also does not factor in jobs with higher priority values requesting more resources, in the same partition(s), blocking execution of a job submitted with the resources / other arguments checked by the command alias. This is due to the infeasibility of calculating a job&#039;s priority value before it is actually submitted.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
Show all available nodes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes&lt;br /&gt;
brigid16&lt;br /&gt;
  cpus=16,mem=200573M&lt;br /&gt;
brigid17&lt;br /&gt;
  cpus=16,mem=414593M&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes available in the &amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=tron&lt;br /&gt;
tron00&lt;br /&gt;
  cpus=14,mem=50433M,gres=gpu:rtxa6000:1&lt;br /&gt;
tron01&lt;br /&gt;
  cpus=10,mem=17665M,gres=gpu:rtxa6000:2&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with one or more RTX A5000 or RTX A6000 GPUs available to the &amp;lt;tt&amp;gt;vulcan&amp;lt;/tt&amp;gt; account:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --account=vulcan --or-gpus=rtxa5000:1,rtxa6000:1&lt;br /&gt;
vulcan32&lt;br /&gt;
  cpus=16,mem=193778M,gres=gpu:rtxa6000:4&lt;br /&gt;
vulcan33&lt;br /&gt;
  cpus=15,mem=181499M,gres=gpu:rtxa5000:3&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with 4 or more CPUs, 48G or more memory, and one or more RTX A6000 GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --cpus=4 --mem=48g --or-gpus=rtxa6000:1&lt;br /&gt;
cbcb27&lt;br /&gt;
  cpus=59,mem=218303M,gres=gpu:rtxa6000:6&lt;br /&gt;
clip06&lt;br /&gt;
  cpus=20,mem=93448M,gres=gpu:rtxa6000:1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with [https://en.wikipedia.org/wiki/Turing_(microarchitecture) Turing] or [https://en.wikipedia.org/wiki/Ampere_(microarchitecture) Ampere] architecture GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --or-feature=Ampere,Turing&lt;br /&gt;
cbcb25&lt;br /&gt;
  cpus=24,mem=255278M,gres=gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
cbcb26&lt;br /&gt;
  cpus=127,mem=447707M,gres=gpu:rtxa5000:7&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with [https://en.wikipedia.org/wiki/Zen_(microarchitecture) Zen] architecture CPUs and [https://en.wikipedia.org/wiki/Ampere_(microarchitecture) Ampere] architecture GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --and-feature=Zen,Ampere&lt;br /&gt;
cbcb26&lt;br /&gt;
  cpus=127,mem=447707M,gres=gpu:rtxa5000:7&lt;br /&gt;
cbcb27&lt;br /&gt;
  cpus=59,mem=218303M,gres=gpu:rtxa6000:6&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(bogus example) Attempt to show nodes available in the &amp;lt;tt&amp;gt;bogus&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=bogus&lt;br /&gt;
There are no nodes that have currently free resources that meet this argument set.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requesting GPUs=&lt;br /&gt;
If you need to do processing on a GPU, you will need to request that your job have access to GPUs just as you need to request processors or CPU cores. In SLURM, GPUs are considered &amp;quot;generic resources&amp;quot; also known as GRES. To request some number of GPUs be reserved/available for your job, you can use the flag &amp;lt;code&amp;gt;--gres=gpu:#&amp;lt;/code&amp;gt; (with the actual number of GPUs you want). If there are multiple types of GPUs available in the cluster and you need a specific type, you can provide the type option to the gres flag e.g. &amp;lt;code&amp;gt;--gres=gpu:rtxa5000:#&amp;lt;/code&amp;gt;. If you do not request a specific type of GPU, you are likely to be scheduled on an older, lower spec&#039;d GPU.&lt;br /&gt;
&lt;br /&gt;
Note that some QoSes may have limits on the number of GPUs you can request per job, so you may need to specify a different QoS to request more GPUs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=medium --gres=gpu:2 nvidia-smi&lt;br /&gt;
...&lt;br /&gt;
Wed Mar  6 16:59:39 2024&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |&lt;br /&gt;
|-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                      |               MIG M. |&lt;br /&gt;
|=========================================+======================+======================|&lt;br /&gt;
|   0  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:3D:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   23C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
|   1  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:40:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   25C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                            |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |&lt;br /&gt;
|        ID   ID                                                             Usage      |&lt;br /&gt;
|=======================================================================================|&lt;br /&gt;
|  No running processes found                                                           |&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that your job will only be able to see/access the GPUs you requested. If you only need 1 GPU, please only request 1 GPU. The others on the node (if any) will be left available for other users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --gres=gpu:rtxa5000:1 nvidia-smi&lt;br /&gt;
Thu Aug 25 15:22:15 2022&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 470.129.06   Driver Version: 470.129.06   CUDA Version: 11.4     |&lt;br /&gt;
|-------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                               |                      |               MIG M. |&lt;br /&gt;
|===============================+======================+======================|&lt;br /&gt;
|   0  NVIDIA RTX A5000    Off  | 00000000:01:00.0 Off |                  Off |&lt;br /&gt;
| 30%   23C    P8    20W / 230W |      0MiB / 24256MiB |      0%      Default |&lt;br /&gt;
|                               |                      |                  N/A |&lt;br /&gt;
+-------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                       GPU Memory |&lt;br /&gt;
|  GPU       PID  Type  Process name                               Usage      |&lt;br /&gt;
|=============================================================================|&lt;br /&gt;
|  No running processes found                                                 |&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As with all other flags, the &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt; flag may also be passed to [[#sbatch | sbatch]] and [[#salloc | salloc]] rather than directly to [[#srun | srun]].&lt;br /&gt;
&lt;br /&gt;
=MPI example=&lt;br /&gt;
To run [https://en.wikipedia.org/wiki/Message_Passing_Interface MPI] jobs, you will need to include the &amp;lt;code&amp;gt;--mpi=pmix&amp;lt;/code&amp;gt; flag in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash &lt;br /&gt;
#SBATCH --job-name=mpi_test # Job name &lt;br /&gt;
#SBATCH --nodes=4 # Number of nodes &lt;br /&gt;
#SBATCH --ntasks=8 # Number of MPI ranks &lt;br /&gt;
#SBATCH --ntasks-per-node=2 # Number of MPI ranks per node &lt;br /&gt;
#SBATCH --ntasks-per-socket=1 # Number of tasks per processor socket on the node &lt;br /&gt;
#SBATCH --time=00:30:00 # Time limit hrs:min:sec &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix /nfshomes/username/testing/mpi/a.out &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=13367</id>
		<title>SLURM/JobSubmission</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=13367"/>
		<updated>2026-08-28T15:23:14Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Identifying Resources and Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Job Submission=&lt;br /&gt;
SLURM offers a variety of ways to run jobs. It is important to understand the different options available and how to request the resources required for a job in order for it to run successfully. All job submission should be done from submit nodes; any computational code should be run in a job allocation on compute nodes. The following commands outline how to allocate resources on the compute nodes and submit processes to be run on the allocated nodes.&lt;br /&gt;
&lt;br /&gt;
The cluster that everyone with a [[Accounts#UMIACS_Account | UMIACS account]] has access to is [[Nexus]]. Please visit the Nexus page for instructions on how to connect to your assigned submit nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computationally intensive processes run on submission nodes will be terminated. Please submit jobs to be scheduled on compute nodes for this purpose.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For details on how SLURM decides how to schedule jobs when multiple jobs are waiting in a scheduler&#039;s queue, please see [[SLURM/Priority]].&lt;br /&gt;
&lt;br /&gt;
==srun==&lt;br /&gt;
The &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; command is used to run a process on the compute nodes in the cluster. If you pass it a normal shell command (or command that executes a script), it will submit a job to run that shell command/script on a compute node and then return. &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; accepts many command line options to specify the resources required by the command passed to it. Some common command line arguments are listed below and full documentation of all available options is available in the man page for &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, which can be accessed by running &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --qos=default --mem=100mb --time=1:00:00 bash -c &#039;echo &amp;quot;Hello World from&amp;quot; `hostname`&#039;&lt;br /&gt;
Hello World from tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to understand that &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is an interactive command. By default input to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is broadcast to all compute nodes running your process and output from the compute nodes is redirected to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;. This behavior can be changed; however, &#039;&#039;&#039;srun will always wait for the command passed to finish before exiting, so if you start a long running process and end your terminal session, your process will stop running on the compute nodes and your job will end&#039;&#039;&#039;. To run a non-interactive submission that will remain running after you logout, you will need to wrap your &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; commands in a batch script and submit it with [[#sbatch | sbatch]].&lt;br /&gt;
&lt;br /&gt;
===Common srun Arguments===&lt;br /&gt;
* &amp;lt;code&amp;gt;--job-name=&amp;lt;JOBNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be named &amp;lt;JOBNAME&amp;gt;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem=1g&amp;lt;/code&amp;gt; &#039;&#039;Requests 1GB of memory for your job, if no unit is given MB is assumed&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--ntasks=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 &amp;quot;tasks&amp;quot; which map to cores on a CPU for your job; if passed to srun, runs the given command concurrently on each core&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus-per-task=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 CPU cores be allocated per task for your job&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodes=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 nodes be allocated to your job; if passed to srun, runs the given command concurrently on each node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodelist=&amp;lt;NODENAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests to run your job on the &amp;lt;NODENAME&amp;gt; node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--time=dd-hh:mm:ss&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run for dd days, hh hours, mm minutes, and ss seconds&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--error=&amp;lt;ERRNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Redirects stderr for your job to the &amp;lt;ERRNAME&amp;gt; file&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition=&amp;lt;PARTITIONNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run in the &amp;lt;PARTITIONNAME&amp;gt; partition&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos=&amp;lt;QOSNAME&amp;gt;default&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run with the &amp;lt;QOSNAME&amp;gt; QOS, to see the available QOS options on a cluster, run&#039;&#039; &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--account=&amp;lt;ACCOUNTNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job runs under the &amp;lt;ACCOUNTNAME&amp;gt; Slurm account, different accounts have different available partitions/QOS&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--output=&amp;lt;OUTNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Redirects stdout for your job to the &amp;lt;OUTNAME&amp;gt; file&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--requeue&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be automatically requeued if it is preempted&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--exclusive&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be the only one running on the node(s) it is assigned to. This requires that your job be allocated all of the resources on the node(s). The scheduler &#039;&#039;&#039;does not&#039;&#039;&#039; automatically give your job all of the node&#039;s/nodes&#039; resources, however, so if you need more than the default, you still need to request these with&#039;&#039; &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; &#039;&#039;and&#039;&#039; &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interactive Shell Sessions===&lt;br /&gt;
An interactive shell session on a compute node can be useful for debugging or developing code that isn&#039;t ready to be run as a batch job. To get an interactive shell on a node, use &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;--pty&amp;lt;/code&amp;gt; argument to invoke a shell:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=default --mem=1g --time=01:00:00 bash&lt;br /&gt;
$ hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please do not leave interactive shells running for long periods of time when you are not working. This blocks resources from being used by everyone else.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==salloc==&lt;br /&gt;
The &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; command can also be used to request resources be allocated without needing a batch script. Running salloc with a list of resources will allocate the resources you requested, create a job, and drop you into a subshell with the environment variables necessary to run commands in the newly created job allocation. When your time is up or you exit the subshell, your job allocation will be relinquished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ salloc --qos=default -N 1 --mem=2g --time=01:00:00&lt;br /&gt;
salloc: Granted job allocation 159&lt;br /&gt;
$ srun /usr/bin/hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
$ exit&lt;br /&gt;
exit&lt;br /&gt;
salloc: Relinquishing job allocation 159&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please be careful when using salloc - any commands not invoked with srun will be run locally on the submission node.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==sbatch==&lt;br /&gt;
The &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; command allows you to write a batch script to be submitted and run non-interactively on the compute nodes. To run a simple Hello World command on the compute nodes you could write a file, helloWorld.sh with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
srun bash -c &#039;echo Hello World from `hostname`&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you need to submit the script with sbatch and request resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch --qos=default --mem=1g --time=1:00:00 helloWorld.sh&lt;br /&gt;
Submitted batch job 121&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SLURM will return a job number that you can use to check the status of your job with squeue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
               121      tron helloWor username  R       0:01      1 tron32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Advanced Batch Scripts====&lt;br /&gt;
You can also write a batch script with all of your resources/options defined in the script itself. This is useful for jobs that need to be run tens/hundreds/thousands of times. You can then handle any necessary environment setup and run commands on the resources you requested by invoking commands with srun. The srun commands can also be more complex and be told to only use portions of your entire job allocation - each of these distinct srun commands makes up one &amp;quot;job step&amp;quot;. The batch script will be run on the first node allocated as part of your job allocation and each job step will be run on whatever resources you tell them to.&lt;br /&gt;
&lt;br /&gt;
In the following example, we have a batch job that will request 2 nodes in the cluster. We then load a specific version of [[Python]] into our environment and submit two job steps, each one using one node. Since srun blocks until the command finishes by default, we use the &#039;&amp;amp;&#039; operator to background the process so that both job steps can run at once; however, this means that we then need to use the wait command to block processing until all background processes have finished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Lines that begin with #SBATCH specify commands to be used by SLURM for scheduling. These MUST be above any non-#SBATCH lines in the script to take effect.&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=helloWorld                                        # set job name&lt;br /&gt;
#SBATCH --output=helloWorld.out.%j                                   # indicates a file to redirect STDOUT to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --error=helloWorld.err.%j                                    # indicates a file to redirect STDERR to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --time=00:05:00                                              # how long you would like your job to run; format=dd-hh:mm:ss&lt;br /&gt;
#SBATCH --account=nexus                                              # set account, this determines which partitions and QOSes are available for your job&lt;br /&gt;
#SBATCH --partition=tron                                             # set partition, this determines what nodes are available for your job&lt;br /&gt;
#SBATCH --qos=default                                                # set QOS, this determines how many resources can be requested within your job, and for how long&lt;br /&gt;
#SBATCH --nodes=2                                                    # number of nodes to allocate for your job&lt;br /&gt;
#SBATCH --ntasks=4                                                   # request 4 cpu cores be reserved for your job total&lt;br /&gt;
#SBATCH --ntasks-per-node=2                                          # request 2 cpu cores be reserved per node&lt;br /&gt;
#SBATCH --mem=1g                                                     # memory required by job; if unit is not specified MB will be assumed. for multi-node jobs, this argument allocates this much memory *per node*&lt;br /&gt;
&lt;br /&gt;
srun --nodes=1 --mem=512m bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;    # use srun to invoke commands within your job; using an &#039;&amp;amp;&#039;&lt;br /&gt;
srun --nodes=1 --mem=512m bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;    # will background the process allowing them to run concurrently&lt;br /&gt;
wait                                                                 # wait for any background processes to complete&lt;br /&gt;
&lt;br /&gt;
# Once the end of the batch script is reached, your job allocation will be revoked.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another useful thing to know is that you can pass additional arguments into your sbatch scripts on the command line and reference them as &amp;lt;code&amp;gt;${1}&amp;lt;/code&amp;gt; for the first argument and so on.&lt;br /&gt;
&lt;br /&gt;
====More Examples====&lt;br /&gt;
* [[SLURM/ArrayJobs]]&lt;br /&gt;
&lt;br /&gt;
==scancel==&lt;br /&gt;
The &amp;lt;code&amp;gt;scancel&amp;lt;/code&amp;gt; command can be used to cancel your own job allocations or job steps that are no longer needed. It can be passed individual job IDs or an option to delete all of your jobs or jobs that meet certain criteria.&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255&amp;lt;/code&amp;gt;     &#039;&#039;cancel job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255.3&amp;lt;/code&amp;gt;     &#039;&#039;cancel job step 3 of job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel --user=username --partition=tron&amp;lt;/code&amp;gt;    &#039;&#039;cancel all jobs for username in the tron partition; username must be your UMD directory ID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Identifying Resources and Features=&lt;br /&gt;
The &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; command can show you additional features of nodes in the cluster but you need to ask it to show some non-default options using a command like &amp;lt;code&amp;gt;sinfo -o &amp;quot;%40N %8c %8m %35f %35G&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -o &amp;quot;%40N %10c %10m %40f %32G&amp;quot;&lt;br /&gt;
NODELIST                                 CPUS       MEMORY     AVAIL_FEATURES                           GRES&lt;br /&gt;
cbcb[00-21]                              32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)&lt;br /&gt;
cbcb25                                   24         255278     rhel9,x86_64,Xeon,E5-2650,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
cbcb30                                   48         1157583    rhel9,x86_64,EPYC,EPYC-9475F             (null)&lt;br /&gt;
legacy00                                 48         125940     rhel9,x86_64,Zen,EPYC-7402               (null)&lt;br /&gt;
legacy[01-11,13-15,17-19]                12+        126117+    rhel9,x86_64,Xeon,E5-2620                (null)&lt;br /&gt;
legacy[20,42,50-51]                      24+        384270+    rhel9,x86_64,Xeon,E5-2680                (null)&lt;br /&gt;
legacy[37-40]                            64         512878     rhel9,x86_64,Zen,EPYC-7502               (null)&lt;br /&gt;
legacy[33-36,43-44]                      24         255150     rhel9,x86_64,Xeon,E5-2650                (null)&lt;br /&gt;
legacy41                                 8          61567      rhel9,x86_64,Zen,EPYC-7262               (null)&lt;br /&gt;
legacy45                                 44         1029404    rhel9,x86_64,Xeon,E5-2699                (null)&lt;br /&gt;
legacy[46-49]                            20         384271     rhel9,x86_64,Xeon,E5-2660                (null)&lt;br /&gt;
legacy[52-53]                            20         61739      rhel9,x86_64,Xeon,E5-2640                (null)&lt;br /&gt;
cbcb26                                   128        513243     rhel9,x86_64,Zen,EPYC-7763,Ampere        gpu:rtxa5000:7&lt;br /&gt;
cbcb27                                   64         255167     rhel9,x86_64,Zen,EPYC-7513,Ampere        gpu:rtxa6000:7&lt;br /&gt;
cbcb[28-29]                              32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8&lt;br /&gt;
tron[46-61]                              48         255225+    rhel9,x86_64,Zen,EPYC-7352,Ampere        gpu:rtxa5000:8&lt;br /&gt;
tron[06-09,12-15,21]                     16         126214+    rhel9,x86_64,Zen,EPYC-7302P,Ampere       gpu:rtxa4000:4&lt;br /&gt;
tron[10-11,16-20,34]                     16         126217     rhel9,x86_64,Zen,EPYC-7313P,Ampere       gpu:rtxa4000:4&lt;br /&gt;
tron[22-33,35-45]                        16         126214+    rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa4000:4&lt;br /&gt;
clip04                                   32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtx3090:4&lt;br /&gt;
clip11                                   16         126217     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa4000:4&lt;br /&gt;
clip13,cml30,vulcan[29-32,45]            32         255218+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:8&lt;br /&gt;
clip14                                   32         125964     rhel9,x86_64,Xeon,Gold-6226R,Ampere      gpu:rtxa5000:3&lt;br /&gt;
clip[05-06]                              24         126216     rhel9,x86_64,Zen,EPYC-7352,Ampere        gpu:rtxa6000:2&lt;br /&gt;
cml[17-28],gammagpu05                    32         255225+    rhel9,x86_64,Zen,EPYC-7282,Ampere        gpu:rtxa4000:8&lt;br /&gt;
cml33                                    64         1029019    rhel9,x86_64,Xeon,6448Y,Hopper           gpu:h100-sxm:4&lt;br /&gt;
cml38                                    128        2061422    rhel9,x86_64,Xeon,6776P,Blackwell        gpu:b300-sxm:8&lt;br /&gt;
cml31                                    32         384094     rhel9,x86_64,Zen,EPYC-9124,Ampere,Hopper gpu:a100:1,gpu:h100-nvl:1&lt;br /&gt;
cml32                                    64         512999     rhel9,x86_64,Zen,EPYC-7543,Ampere        gpu:a100:4&lt;br /&gt;
cml37                                    16         383918     rhel9,x86_64,Zen,EPYC-9124,Blackwell     gpu:rtx6000bw-mq:4&lt;br /&gt;
cml[00,02-03,06-07,09-11,13-16],tron[62- 32         351530+    rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:8&lt;br /&gt;
cml[04-05]                               32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:6&lt;br /&gt;
cml08                                    32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:7&lt;br /&gt;
cml12                                    32         383038     rhel9,x86_64,Xeon,4216,Turing,Ampere     gpu:rtx2080ti:7,gpu:rtxa4000:1&lt;br /&gt;
cml34                                    32         513260     rhel9,x86_64,Zen,EPYC-7313,Ada           gpu:l40s:8&lt;br /&gt;
cml[35-36],vulcan46                      128        2061187+   rhel9,x86_64,Xeon,8592+,Hopper           gpu:h200-sxm:8&lt;br /&gt;
gammagpu00                               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa5000:8&lt;br /&gt;
gammagpu[01-04,06-09],vulcan[33-37]      32         255170+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa5000:8&lt;br /&gt;
csd00,gammagpu[18-21]                    32         254883     rhel9,x86_64,Xeon,6526Y,Ada              gpu:l40s:4&lt;br /&gt;
clip12,gammagpu[10-17]                   16         126203+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:4&lt;br /&gt;
oasis[00-12,14-36,38]                    160        28114      rhel9,aarch64,Altra,Altra-80             (null)&lt;br /&gt;
quics00                                  128        1545009    rhel9,x86_64,Zen,EPYC-9534               (null)&lt;br /&gt;
tron[00,03]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:6&lt;br /&gt;
vulcan24                                 16         126216     rhel9,x86_64,Zen,EPYC-7282,Ampere        gpu:rtxa6000:4&lt;br /&gt;
legacygpu06                              20         255249     rhel9,x86_64,Xeon,E5-2699,Maxwell        gpu:gtxtitanx:4&lt;br /&gt;
tron[01-02]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8&lt;br /&gt;
tron[04-05]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:7&lt;br /&gt;
vulcan[38-44]                            32         255215     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa4000:8&lt;br /&gt;
legacygpu00                              20         255249     rhel9,x86_64,Xeon,E5-2650,Pascal         gpu:titanxp:4&lt;br /&gt;
legacygpu[02,07]                         20         255249+    rhel9,x86_64,Xeon,E5-2650,Maxwell        gpu:gtxtitanx:4&lt;br /&gt;
legacygpu[03-04]                         16         255268     rhel9,x86_64,Xeon,E5-2630,Maxwell        gpu:gtxtitanx:2&lt;br /&gt;
legacygpu05                              44         513193     rhel9,x86_64,Xeon,E5-2699,Pascal         gpu:gtx1080ti:4&lt;br /&gt;
legacygpu09                              32         255276     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:titanxpascal:3&lt;br /&gt;
legacygpu10                              32         255276     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:titanxpascal:1,gpu:titanxp:2&lt;br /&gt;
legacygpu11                              20         126255     rhel9,x86_64,Xeon,E5-2630,Pascal         gpu:gtx1080ti:3&lt;br /&gt;
legacygpu12                              20         126243     rhel9,x86_64,Xeon,E5-2630,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:2&lt;br /&gt;
legacygpu13                              8          255263     rhel9,x86_64,Xeon,E5-2623,Pascal         gpu:gtx1080ti:3&lt;br /&gt;
legacygpu[14,26-41]                      32         255258+    rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:gtx1080ti:8&lt;br /&gt;
legacygpu15                              32         383043     rhel9,x86_64,Xeon,6130,Pascal,Turing     gpu:rtx2080ti:5,gpu:gtx1080ti:3&lt;br /&gt;
legacygpu[16-17]                         20         189498     rhel9,x86_64,Xeon,4114,Turing            gpu:rtx2080ti:8&lt;br /&gt;
legacygpu18                              32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:7,gpu:p100:1&lt;br /&gt;
legacygpu[19,23]                         32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:7&lt;br /&gt;
legacygpu[20-22,24-25]                   32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:8&lt;br /&gt;
legacygpu42                              24         770126     rhel9,x86_64,Xeon,6146,Pascal            gpu:titanxp:10&lt;br /&gt;
tron[64,67]                              32         383028+    rhel9,x86_64,Xeon,4216,Turing,Ampere     gpu:rtx2080ti:7,gpu:rtx3070:1&lt;br /&gt;
brigid[16-17]                            48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)&lt;br /&gt;
vulcan23                                 32         383030     rhel9,x86_64,Xeon,4612,Turing            gpu:rtx2080ti:6&lt;br /&gt;
vulcan[27-28]                            56         770093     rhel9,x86_64,Xeon,8280,Turing            gpu:rtx2080ti:10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that all of the nodes shown by this may not necessarily be in a partition you are able to submit to.&lt;br /&gt;
&lt;br /&gt;
You can identify further specific information about a node using [[SLURM/ClusterStatus#scontrol | scontrol]] with various flags.&lt;br /&gt;
&lt;br /&gt;
There are also two command aliases developed by UMIACS staff to show various node information in aggregate. They are &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==show_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; command alias shows each node&#039;s name, number of CPUs, memory, {OS, CPU architecture, CPU type, GPU architecture (if the node has GPUs)} (as AVAIL_FEATURES), GRES (GPUs), and State. It essentially wraps the &amp;lt;tt&amp;gt;sinfo&amp;lt;/tt&amp;gt; command with some pre-determined output format options and shows each node on its own line, in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
To only view nodes in a specific partition, append &amp;lt;code&amp;gt;-p &amp;lt;partition name&amp;gt;&amp;lt;/code&amp;gt; to the command alias.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
brigid16             48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)                           idle&lt;br /&gt;
brigid17             48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)                           idle&lt;br /&gt;
...                  ...        ...        ...                                      ...                              ...&lt;br /&gt;
vulcan45             32         513250     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(specific partition)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes -p tron&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
tron00               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
tron01               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
...                  ...        ...        ...                                      ...                              ...&lt;br /&gt;
tron69               32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:8                  idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==show_available_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt; command alias takes zero or more arguments that correspond to Slurm constructs, resources, or features that you are looking to request a job with and tells you what nodes could &#039;&#039;&#039;theoretically&#039;&#039;&#039;[0,1] run a job with these arguments immediately. It assumes your job is a single-node job.&lt;br /&gt;
&lt;br /&gt;
These arguments are:&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;: Only include nodes in the specified partition(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified account(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified QoS(es).&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus&amp;lt;/code&amp;gt;: Only include nodes with at least this many CPUs free.&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;: Only include nodes with at least this much memory free. The default unit is MB if unspecified, but any of {K,M,G,T} can be suffixed to the number provided (will then be interpreted as KB, MB, GB, or TB, respectively).&lt;br /&gt;
* GRES-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains &#039;&#039;all&#039;&#039; of the specified GRES type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains &#039;&#039;any&#039;&#039; of the specified GRES type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--and-gres&amp;lt;/tt&amp;gt; if only one GRES type/quantity pairing is specified.&lt;br /&gt;
* GPU-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--gpus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains &#039;&#039;all&#039;&#039; of the specified GPU type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains &#039;&#039;any&#039;&#039; of the specified GPU type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--and-gpus&amp;lt;/tt&amp;gt; if only one GPU type/quantity pairing is specified.&lt;br /&gt;
* Feature-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--feature&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains &#039;&#039;all&#039;&#039; of the specified feature(s).&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains &#039;&#039;any&#039;&#039; of the specified feature(s). Functionally identical to &amp;lt;tt&amp;gt;--and-feature&amp;lt;/tt&amp;gt; if only one feature is specified.&lt;br /&gt;
&lt;br /&gt;
These arguments are also viewable by running &amp;lt;code&amp;gt;show_available_nodes -h&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your passed argument set does not contain any resource-based arguments (CPUs/RAM/GRES or GPUs), a node is defined as available if it has at least 1 CPU and 1MB of RAM available.&lt;br /&gt;
&lt;br /&gt;
If there are no nodes available that meet your passed argument set, you will receive the message &amp;lt;tt&amp;gt;There are no nodes that have currently free resources that meet this argument set.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Footnotes===&lt;br /&gt;
[0] - As of now, this command alias does not factor in resources occupied by jobs that could be preempted (based on the partition(s) passed to it, if present). This is something that we are working on implementing.&lt;br /&gt;
&lt;br /&gt;
[1] - This command alias also does not factor in jobs with higher priority values requesting more resources, in the same partition(s), blocking execution of a job submitted with the resources / other arguments checked by the command alias. This is due to the infeasibility of calculating a job&#039;s priority value before it is actually submitted.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
Show all available nodes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes&lt;br /&gt;
brigid17&lt;br /&gt;
  cpus=16,mem=414593M&lt;br /&gt;
brigid18&lt;br /&gt;
  cpus=8,mem=24875M&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes available in the &amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition tron&lt;br /&gt;
tron00&lt;br /&gt;
  cpus=14,mem=50433M,gres=gpu:rtxa6000:1&lt;br /&gt;
tron01&lt;br /&gt;
  cpus=10,mem=17665M,gres=gpu:rtxa6000:2&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with one or more RTX A5000 or RTX A6000 GPUs available to the &amp;lt;tt&amp;gt;vulcan&amp;lt;/tt&amp;gt; account:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --account vulcan --or-gpus rtxa5000:1,rtxa6000:1&lt;br /&gt;
vulcan32&lt;br /&gt;
  cpus=16,mem=193778M,gres=gpu:rtxa6000:4&lt;br /&gt;
vulcan33&lt;br /&gt;
  cpus=15,mem=181499M,gres=gpu:rtxa5000:3&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with 4 or more CPUs, 48G or more memory, and one or more RTX A6000 GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --cpus=4 --mem=48g --or-gpus=rtxa6000:1&lt;br /&gt;
cbcb27&lt;br /&gt;
  cpus=59,mem=218303M,gres=gpu:rtxa6000:6&lt;br /&gt;
clip06&lt;br /&gt;
  cpus=20,mem=93448M,gres=gpu:rtxa6000:1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with [https://en.wikipedia.org/wiki/Turing_(microarchitecture) Turing] or [https://en.wikipedia.org/wiki/Ampere_(microarchitecture) Ampere] architecture GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --or-feature=Ampere,Turing&lt;br /&gt;
cbcb25&lt;br /&gt;
  cpus=24,mem=255278M,gres=gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
cbcb26&lt;br /&gt;
  cpus=127,mem=447707M,gres=gpu:rtxa5000:7&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with [https://en.wikipedia.org/wiki/Zen_(microarchitecture) Zen] architecture CPUs and [https://en.wikipedia.org/wiki/Ampere_(microarchitecture) Ampere] architecture GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --and-feature=Zen,Ampere&lt;br /&gt;
cbcb26&lt;br /&gt;
  cpus=127,mem=447707M,gres=gpu:rtxa5000:7&lt;br /&gt;
cbcb27&lt;br /&gt;
  cpus=59,mem=218303M,gres=gpu:rtxa6000:6&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(bogus example) Attempt to show nodes available in the &amp;lt;tt&amp;gt;bogus&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=bogus&lt;br /&gt;
There are no nodes that have currently free resources that meet this argument set.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requesting GPUs=&lt;br /&gt;
If you need to do processing on a GPU, you will need to request that your job have access to GPUs just as you need to request processors or CPU cores. In SLURM, GPUs are considered &amp;quot;generic resources&amp;quot; also known as GRES. To request some number of GPUs be reserved/available for your job, you can use the flag &amp;lt;code&amp;gt;--gres=gpu:#&amp;lt;/code&amp;gt; (with the actual number of GPUs you want). If there are multiple types of GPUs available in the cluster and you need a specific type, you can provide the type option to the gres flag e.g. &amp;lt;code&amp;gt;--gres=gpu:rtxa5000:#&amp;lt;/code&amp;gt;. If you do not request a specific type of GPU, you are likely to be scheduled on an older, lower spec&#039;d GPU.&lt;br /&gt;
&lt;br /&gt;
Note that some QoSes may have limits on the number of GPUs you can request per job, so you may need to specify a different QoS to request more GPUs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=medium --gres=gpu:2 nvidia-smi&lt;br /&gt;
...&lt;br /&gt;
Wed Mar  6 16:59:39 2024&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |&lt;br /&gt;
|-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                      |               MIG M. |&lt;br /&gt;
|=========================================+======================+======================|&lt;br /&gt;
|   0  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:3D:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   23C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
|   1  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:40:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   25C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                            |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |&lt;br /&gt;
|        ID   ID                                                             Usage      |&lt;br /&gt;
|=======================================================================================|&lt;br /&gt;
|  No running processes found                                                           |&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that your job will only be able to see/access the GPUs you requested. If you only need 1 GPU, please only request 1 GPU. The others on the node (if any) will be left available for other users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --gres=gpu:rtxa5000:1 nvidia-smi&lt;br /&gt;
Thu Aug 25 15:22:15 2022&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 470.129.06   Driver Version: 470.129.06   CUDA Version: 11.4     |&lt;br /&gt;
|-------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                               |                      |               MIG M. |&lt;br /&gt;
|===============================+======================+======================|&lt;br /&gt;
|   0  NVIDIA RTX A5000    Off  | 00000000:01:00.0 Off |                  Off |&lt;br /&gt;
| 30%   23C    P8    20W / 230W |      0MiB / 24256MiB |      0%      Default |&lt;br /&gt;
|                               |                      |                  N/A |&lt;br /&gt;
+-------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                       GPU Memory |&lt;br /&gt;
|  GPU       PID  Type  Process name                               Usage      |&lt;br /&gt;
|=============================================================================|&lt;br /&gt;
|  No running processes found                                                 |&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As with all other flags, the &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt; flag may also be passed to [[#sbatch | sbatch]] and [[#salloc | salloc]] rather than directly to [[#srun | srun]].&lt;br /&gt;
&lt;br /&gt;
=MPI example=&lt;br /&gt;
To run [https://en.wikipedia.org/wiki/Message_Passing_Interface MPI] jobs, you will need to include the &amp;lt;code&amp;gt;--mpi=pmix&amp;lt;/code&amp;gt; flag in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash &lt;br /&gt;
#SBATCH --job-name=mpi_test # Job name &lt;br /&gt;
#SBATCH --nodes=4 # Number of nodes &lt;br /&gt;
#SBATCH --ntasks=8 # Number of MPI ranks &lt;br /&gt;
#SBATCH --ntasks-per-node=2 # Number of MPI ranks per node &lt;br /&gt;
#SBATCH --ntasks-per-socket=1 # Number of tasks per processor socket on the node &lt;br /&gt;
#SBATCH --time=00:30:00 # Time limit hrs:min:sec &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix /nfshomes/username/testing/mpi/a.out &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=13366</id>
		<title>SLURM/JobSubmission</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=13366"/>
		<updated>2026-08-28T15:22:21Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Job Submission=&lt;br /&gt;
SLURM offers a variety of ways to run jobs. It is important to understand the different options available and how to request the resources required for a job in order for it to run successfully. All job submission should be done from submit nodes; any computational code should be run in a job allocation on compute nodes. The following commands outline how to allocate resources on the compute nodes and submit processes to be run on the allocated nodes.&lt;br /&gt;
&lt;br /&gt;
The cluster that everyone with a [[Accounts#UMIACS_Account | UMIACS account]] has access to is [[Nexus]]. Please visit the Nexus page for instructions on how to connect to your assigned submit nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computationally intensive processes run on submission nodes will be terminated. Please submit jobs to be scheduled on compute nodes for this purpose.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For details on how SLURM decides how to schedule jobs when multiple jobs are waiting in a scheduler&#039;s queue, please see [[SLURM/Priority]].&lt;br /&gt;
&lt;br /&gt;
==srun==&lt;br /&gt;
The &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; command is used to run a process on the compute nodes in the cluster. If you pass it a normal shell command (or command that executes a script), it will submit a job to run that shell command/script on a compute node and then return. &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; accepts many command line options to specify the resources required by the command passed to it. Some common command line arguments are listed below and full documentation of all available options is available in the man page for &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, which can be accessed by running &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --qos=default --mem=100mb --time=1:00:00 bash -c &#039;echo &amp;quot;Hello World from&amp;quot; `hostname`&#039;&lt;br /&gt;
Hello World from tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to understand that &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is an interactive command. By default input to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is broadcast to all compute nodes running your process and output from the compute nodes is redirected to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;. This behavior can be changed; however, &#039;&#039;&#039;srun will always wait for the command passed to finish before exiting, so if you start a long running process and end your terminal session, your process will stop running on the compute nodes and your job will end&#039;&#039;&#039;. To run a non-interactive submission that will remain running after you logout, you will need to wrap your &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; commands in a batch script and submit it with [[#sbatch | sbatch]].&lt;br /&gt;
&lt;br /&gt;
===Common srun Arguments===&lt;br /&gt;
* &amp;lt;code&amp;gt;--job-name=&amp;lt;JOBNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be named &amp;lt;JOBNAME&amp;gt;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem=1g&amp;lt;/code&amp;gt; &#039;&#039;Requests 1GB of memory for your job, if no unit is given MB is assumed&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--ntasks=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 &amp;quot;tasks&amp;quot; which map to cores on a CPU for your job; if passed to srun, runs the given command concurrently on each core&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus-per-task=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 CPU cores be allocated per task for your job&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodes=2&amp;lt;/code&amp;gt; &#039;&#039;Requests 2 nodes be allocated to your job; if passed to srun, runs the given command concurrently on each node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodelist=&amp;lt;NODENAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests to run your job on the &amp;lt;NODENAME&amp;gt; node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--time=dd-hh:mm:ss&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run for dd days, hh hours, mm minutes, and ss seconds&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--error=&amp;lt;ERRNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Redirects stderr for your job to the &amp;lt;ERRNAME&amp;gt; file&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition=&amp;lt;PARTITIONNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run in the &amp;lt;PARTITIONNAME&amp;gt; partition&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos=&amp;lt;QOSNAME&amp;gt;default&amp;lt;/code&amp;gt; &#039;&#039;Requests your job run with the &amp;lt;QOSNAME&amp;gt; QOS, to see the available QOS options on a cluster, run&#039;&#039; &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--account=&amp;lt;ACCOUNTNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Requests your job runs under the &amp;lt;ACCOUNTNAME&amp;gt; Slurm account, different accounts have different available partitions/QOS&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--output=&amp;lt;OUTNAME&amp;gt;&amp;lt;/code&amp;gt; &#039;&#039;Redirects stdout for your job to the &amp;lt;OUTNAME&amp;gt; file&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--requeue&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be automatically requeued if it is preempted&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--exclusive&amp;lt;/code&amp;gt; &#039;&#039;Requests your job be the only one running on the node(s) it is assigned to. This requires that your job be allocated all of the resources on the node(s). The scheduler &#039;&#039;&#039;does not&#039;&#039;&#039; automatically give your job all of the node&#039;s/nodes&#039; resources, however, so if you need more than the default, you still need to request these with&#039;&#039; &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; &#039;&#039;and&#039;&#039; &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Interactive Shell Sessions===&lt;br /&gt;
An interactive shell session on a compute node can be useful for debugging or developing code that isn&#039;t ready to be run as a batch job. To get an interactive shell on a node, use &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; with the &amp;lt;code&amp;gt;--pty&amp;lt;/code&amp;gt; argument to invoke a shell:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=default --mem=1g --time=01:00:00 bash&lt;br /&gt;
$ hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please do not leave interactive shells running for long periods of time when you are not working. This blocks resources from being used by everyone else.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==salloc==&lt;br /&gt;
The &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; command can also be used to request resources be allocated without needing a batch script. Running salloc with a list of resources will allocate the resources you requested, create a job, and drop you into a subshell with the environment variables necessary to run commands in the newly created job allocation. When your time is up or you exit the subshell, your job allocation will be relinquished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ salloc --qos=default -N 1 --mem=2g --time=01:00:00&lt;br /&gt;
salloc: Granted job allocation 159&lt;br /&gt;
$ srun /usr/bin/hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
$ exit&lt;br /&gt;
exit&lt;br /&gt;
salloc: Relinquishing job allocation 159&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please be careful when using salloc - any commands not invoked with srun will be run locally on the submission node.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==sbatch==&lt;br /&gt;
The &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; command allows you to write a batch script to be submitted and run non-interactively on the compute nodes. To run a simple Hello World command on the compute nodes you could write a file, helloWorld.sh with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
srun bash -c &#039;echo Hello World from `hostname`&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you need to submit the script with sbatch and request resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch --qos=default --mem=1g --time=1:00:00 helloWorld.sh&lt;br /&gt;
Submitted batch job 121&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SLURM will return a job number that you can use to check the status of your job with squeue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
               121      tron helloWor username  R       0:01      1 tron32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Advanced Batch Scripts====&lt;br /&gt;
You can also write a batch script with all of your resources/options defined in the script itself. This is useful for jobs that need to be run tens/hundreds/thousands of times. You can then handle any necessary environment setup and run commands on the resources you requested by invoking commands with srun. The srun commands can also be more complex and be told to only use portions of your entire job allocation - each of these distinct srun commands makes up one &amp;quot;job step&amp;quot;. The batch script will be run on the first node allocated as part of your job allocation and each job step will be run on whatever resources you tell them to.&lt;br /&gt;
&lt;br /&gt;
In the following example, we have a batch job that will request 2 nodes in the cluster. We then load a specific version of [[Python]] into our environment and submit two job steps, each one using one node. Since srun blocks until the command finishes by default, we use the &#039;&amp;amp;&#039; operator to background the process so that both job steps can run at once; however, this means that we then need to use the wait command to block processing until all background processes have finished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Lines that begin with #SBATCH specify commands to be used by SLURM for scheduling. These MUST be above any non-#SBATCH lines in the script to take effect.&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=helloWorld                                        # set job name&lt;br /&gt;
#SBATCH --output=helloWorld.out.%j                                   # indicates a file to redirect STDOUT to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --error=helloWorld.err.%j                                    # indicates a file to redirect STDERR to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --time=00:05:00                                              # how long you would like your job to run; format=dd-hh:mm:ss&lt;br /&gt;
#SBATCH --account=nexus                                              # set account, this determines which partitions and QOSes are available for your job&lt;br /&gt;
#SBATCH --partition=tron                                             # set partition, this determines what nodes are available for your job&lt;br /&gt;
#SBATCH --qos=default                                                # set QOS, this determines how many resources can be requested within your job, and for how long&lt;br /&gt;
#SBATCH --nodes=2                                                    # number of nodes to allocate for your job&lt;br /&gt;
#SBATCH --ntasks=4                                                   # request 4 cpu cores be reserved for your job total&lt;br /&gt;
#SBATCH --ntasks-per-node=2                                          # request 2 cpu cores be reserved per node&lt;br /&gt;
#SBATCH --mem=1g                                                     # memory required by job; if unit is not specified MB will be assumed. for multi-node jobs, this argument allocates this much memory *per node*&lt;br /&gt;
&lt;br /&gt;
srun --nodes=1 --mem=512m bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;    # use srun to invoke commands within your job; using an &#039;&amp;amp;&#039;&lt;br /&gt;
srun --nodes=1 --mem=512m bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;    # will background the process allowing them to run concurrently&lt;br /&gt;
wait                                                                 # wait for any background processes to complete&lt;br /&gt;
&lt;br /&gt;
# Once the end of the batch script is reached, your job allocation will be revoked.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another useful thing to know is that you can pass additional arguments into your sbatch scripts on the command line and reference them as &amp;lt;code&amp;gt;${1}&amp;lt;/code&amp;gt; for the first argument and so on.&lt;br /&gt;
&lt;br /&gt;
====More Examples====&lt;br /&gt;
* [[SLURM/ArrayJobs]]&lt;br /&gt;
&lt;br /&gt;
==scancel==&lt;br /&gt;
The &amp;lt;code&amp;gt;scancel&amp;lt;/code&amp;gt; command can be used to cancel your own job allocations or job steps that are no longer needed. It can be passed individual job IDs or an option to delete all of your jobs or jobs that meet certain criteria.&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255&amp;lt;/code&amp;gt;     &#039;&#039;cancel job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255.3&amp;lt;/code&amp;gt;     &#039;&#039;cancel job step 3 of job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel --user=username --partition=tron&amp;lt;/code&amp;gt;    &#039;&#039;cancel all jobs for username in the tron partition; username must be your UMD directory ID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Identifying Resources and Features=&lt;br /&gt;
The &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; command can show you additional features of nodes in the cluster but you need to ask it to show some non-default options using a command like &amp;lt;code&amp;gt;sinfo -o &amp;quot;%40N %8c %8m %35f %35G&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -o &amp;quot;%40N %10c %10m %40f %32G&amp;quot;&lt;br /&gt;
NODELIST                                 CPUS       MEMORY     AVAIL_FEATURES                           GRES&lt;br /&gt;
[root@nexusctl00 ~]# sinfo -o &amp;quot;%40N %10c %10m %40f %32G&amp;quot;&lt;br /&gt;
NODELIST                                 CPUS       MEMORY     AVAIL_FEATURES                           GRES&lt;br /&gt;
cbcb[00-21]                              32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)&lt;br /&gt;
cbcb25                                   24         255278     rhel9,x86_64,Xeon,E5-2650,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
cbcb30                                   48         1157583    rhel9,x86_64,EPYC,EPYC-9475F             (null)&lt;br /&gt;
legacy00                                 48         125940     rhel9,x86_64,Zen,EPYC-7402               (null)&lt;br /&gt;
legacy[01-11,13-15,17-19]                12+        126117+    rhel9,x86_64,Xeon,E5-2620                (null)&lt;br /&gt;
legacy[20,42,50-51]                      24+        384270+    rhel9,x86_64,Xeon,E5-2680                (null)&lt;br /&gt;
legacy[37-40]                            64         512878     rhel9,x86_64,Zen,EPYC-7502               (null)&lt;br /&gt;
legacy[33-36,43-44]                      24         255150     rhel9,x86_64,Xeon,E5-2650                (null)&lt;br /&gt;
legacy41                                 8          61567      rhel9,x86_64,Zen,EPYC-7262               (null)&lt;br /&gt;
legacy45                                 44         1029404    rhel9,x86_64,Xeon,E5-2699                (null)&lt;br /&gt;
legacy[46-49]                            20         384271     rhel9,x86_64,Xeon,E5-2660                (null)&lt;br /&gt;
legacy[52-53]                            20         61739      rhel9,x86_64,Xeon,E5-2640                (null)&lt;br /&gt;
cbcb26                                   128        513243     rhel9,x86_64,Zen,EPYC-7763,Ampere        gpu:rtxa5000:7&lt;br /&gt;
cbcb27                                   64         255167     rhel9,x86_64,Zen,EPYC-7513,Ampere        gpu:rtxa6000:7&lt;br /&gt;
cbcb[28-29]                              32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8&lt;br /&gt;
tron[46-61]                              48         255225+    rhel9,x86_64,Zen,EPYC-7352,Ampere        gpu:rtxa5000:8&lt;br /&gt;
tron[06-09,12-15,21]                     16         126214+    rhel9,x86_64,Zen,EPYC-7302P,Ampere       gpu:rtxa4000:4&lt;br /&gt;
tron[10-11,16-20,34]                     16         126217     rhel9,x86_64,Zen,EPYC-7313P,Ampere       gpu:rtxa4000:4&lt;br /&gt;
tron[22-33,35-45]                        16         126214+    rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa4000:4&lt;br /&gt;
clip04                                   32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtx3090:4&lt;br /&gt;
clip11                                   16         126217     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa4000:4&lt;br /&gt;
clip13,cml30,vulcan[29-32,45]            32         255218+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:8&lt;br /&gt;
clip14                                   32         125964     rhel9,x86_64,Xeon,Gold-6226R,Ampere      gpu:rtxa5000:3&lt;br /&gt;
clip[05-06]                              24         126216     rhel9,x86_64,Zen,EPYC-7352,Ampere        gpu:rtxa6000:2&lt;br /&gt;
cml[17-28],gammagpu05                    32         255225+    rhel9,x86_64,Zen,EPYC-7282,Ampere        gpu:rtxa4000:8&lt;br /&gt;
cml33                                    64         1029019    rhel9,x86_64,Xeon,6448Y,Hopper           gpu:h100-sxm:4&lt;br /&gt;
cml38                                    128        2061422    rhel9,x86_64,Xeon,6776P,Blackwell        gpu:b300-sxm:8&lt;br /&gt;
cml31                                    32         384094     rhel9,x86_64,Zen,EPYC-9124,Ampere,Hopper gpu:a100:1,gpu:h100-nvl:1&lt;br /&gt;
cml32                                    64         512999     rhel9,x86_64,Zen,EPYC-7543,Ampere        gpu:a100:4&lt;br /&gt;
cml37                                    16         383918     rhel9,x86_64,Zen,EPYC-9124,Blackwell     gpu:rtx6000bw-mq:4&lt;br /&gt;
cml[00,02-03,06-07,09-11,13-16],tron[62- 32         351530+    rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:8&lt;br /&gt;
cml[04-05]                               32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:6&lt;br /&gt;
cml08                                    32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:7&lt;br /&gt;
cml12                                    32         383038     rhel9,x86_64,Xeon,4216,Turing,Ampere     gpu:rtx2080ti:7,gpu:rtxa4000:1&lt;br /&gt;
cml34                                    32         513260     rhel9,x86_64,Zen,EPYC-7313,Ada           gpu:l40s:8&lt;br /&gt;
cml[35-36],vulcan46                      128        2061187+   rhel9,x86_64,Xeon,8592+,Hopper           gpu:h200-sxm:8&lt;br /&gt;
gammagpu00                               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa5000:8&lt;br /&gt;
gammagpu[01-04,06-09],vulcan[33-37]      32         255170+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa5000:8&lt;br /&gt;
csd00,gammagpu[18-21]                    32         254883     rhel9,x86_64,Xeon,6526Y,Ada              gpu:l40s:4&lt;br /&gt;
clip12,gammagpu[10-17]                   16         126203+    rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:4&lt;br /&gt;
oasis[00-12,14-36,38]                    160        28114      rhel9,aarch64,Altra,Altra-80             (null)&lt;br /&gt;
quics00                                  128        1545009    rhel9,x86_64,Zen,EPYC-9534               (null)&lt;br /&gt;
tron[00,03]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:6&lt;br /&gt;
vulcan24                                 16         126216     rhel9,x86_64,Zen,EPYC-7282,Ampere        gpu:rtxa6000:4&lt;br /&gt;
legacygpu06                              20         255249     rhel9,x86_64,Xeon,E5-2699,Maxwell        gpu:gtxtitanx:4&lt;br /&gt;
tron[01-02]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8&lt;br /&gt;
tron[04-05]                              32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:7&lt;br /&gt;
vulcan[38-44]                            32         255215     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa4000:8&lt;br /&gt;
legacygpu00                              20         255249     rhel9,x86_64,Xeon,E5-2650,Pascal         gpu:titanxp:4&lt;br /&gt;
legacygpu[02,07]                         20         255249+    rhel9,x86_64,Xeon,E5-2650,Maxwell        gpu:gtxtitanx:4&lt;br /&gt;
legacygpu[03-04]                         16         255268     rhel9,x86_64,Xeon,E5-2630,Maxwell        gpu:gtxtitanx:2&lt;br /&gt;
legacygpu05                              44         513193     rhel9,x86_64,Xeon,E5-2699,Pascal         gpu:gtx1080ti:4&lt;br /&gt;
legacygpu09                              32         255276     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:titanxpascal:3&lt;br /&gt;
legacygpu10                              32         255276     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:titanxpascal:1,gpu:titanxp:2&lt;br /&gt;
legacygpu11                              20         126255     rhel9,x86_64,Xeon,E5-2630,Pascal         gpu:gtx1080ti:3&lt;br /&gt;
legacygpu12                              20         126243     rhel9,x86_64,Xeon,E5-2630,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:2&lt;br /&gt;
legacygpu13                              8          255263     rhel9,x86_64,Xeon,E5-2623,Pascal         gpu:gtx1080ti:3&lt;br /&gt;
legacygpu[14,26-41]                      32         255258+    rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:gtx1080ti:8&lt;br /&gt;
legacygpu15                              32         383043     rhel9,x86_64,Xeon,6130,Pascal,Turing     gpu:rtx2080ti:5,gpu:gtx1080ti:3&lt;br /&gt;
legacygpu[16-17]                         20         189498     rhel9,x86_64,Xeon,4114,Turing            gpu:rtx2080ti:8&lt;br /&gt;
legacygpu18                              32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:7,gpu:p100:1&lt;br /&gt;
legacygpu[19,23]                         32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:7&lt;br /&gt;
legacygpu[20-22,24-25]                   32         255259     rhel9,x86_64,Xeon,E5-2683,Pascal         gpu:p6000:8&lt;br /&gt;
legacygpu42                              24         770126     rhel9,x86_64,Xeon,6146,Pascal            gpu:titanxp:10&lt;br /&gt;
tron[64,67]                              32         383028+    rhel9,x86_64,Xeon,4216,Turing,Ampere     gpu:rtx2080ti:7,gpu:rtx3070:1&lt;br /&gt;
brigid[16-17]                            48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)&lt;br /&gt;
vulcan23                                 32         383030     rhel9,x86_64,Xeon,4612,Turing            gpu:rtx2080ti:6&lt;br /&gt;
vulcan[27-28]                            56         770093     rhel9,x86_64,Xeon,8280,Turing            gpu:rtx2080ti:10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that all of the nodes shown by this may not necessarily be in a partition you are able to submit to.&lt;br /&gt;
&lt;br /&gt;
You can identify further specific information about a node using [[SLURM/ClusterStatus#scontrol | scontrol]] with various flags.&lt;br /&gt;
&lt;br /&gt;
There are also two command aliases developed by UMIACS staff to show various node information in aggregate. They are &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==show_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; command alias shows each node&#039;s name, number of CPUs, memory, {OS, CPU architecture, CPU type, GPU architecture (if the node has GPUs)} (as AVAIL_FEATURES), GRES (GPUs), and State. It essentially wraps the &amp;lt;tt&amp;gt;sinfo&amp;lt;/tt&amp;gt; command with some pre-determined output format options and shows each node on its own line, in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
To only view nodes in a specific partition, append &amp;lt;code&amp;gt;-p &amp;lt;partition name&amp;gt;&amp;lt;/code&amp;gt; to the command alias.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
brigid16             48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)                           idle&lt;br /&gt;
brigid17             48         512897     rhel9,x86_64,Zen,EPYC-7443               (null)                           idle&lt;br /&gt;
...                  ...        ...        ...                                      ...                              ...&lt;br /&gt;
vulcan45             32         513250     rhel9,x86_64,Zen,EPYC-7313,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(specific partition)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes -p tron&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
tron00               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
tron01               32         255233     rhel9,x86_64,Zen,EPYC-7302,Ampere        gpu:rtxa6000:8                   idle&lt;br /&gt;
...                  ...        ...        ...                                      ...                              ...&lt;br /&gt;
tron69               32         383030     rhel9,x86_64,Xeon,4216,Turing            gpu:rtx2080ti:8                  idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==show_available_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt; command alias takes zero or more arguments that correspond to Slurm constructs, resources, or features that you are looking to request a job with and tells you what nodes could &#039;&#039;&#039;theoretically&#039;&#039;&#039;[0,1] run a job with these arguments immediately. It assumes your job is a single-node job.&lt;br /&gt;
&lt;br /&gt;
These arguments are:&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;: Only include nodes in the specified partition(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified account(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified QoS(es).&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus&amp;lt;/code&amp;gt;: Only include nodes with at least this many CPUs free.&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;: Only include nodes with at least this much memory free. The default unit is MB if unspecified, but any of {K,M,G,T} can be suffixed to the number provided (will then be interpreted as KB, MB, GB, or TB, respectively).&lt;br /&gt;
* GRES-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains &#039;&#039;all&#039;&#039; of the specified GRES type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains &#039;&#039;any&#039;&#039; of the specified GRES type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--and-gres&amp;lt;/tt&amp;gt; if only one GRES type/quantity pairing is specified.&lt;br /&gt;
* GPU-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--gpus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains &#039;&#039;all&#039;&#039; of the specified GPU type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains &#039;&#039;any&#039;&#039; of the specified GPU type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--and-gpus&amp;lt;/tt&amp;gt; if only one GPU type/quantity pairing is specified.&lt;br /&gt;
* Feature-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--feature&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--and-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains &#039;&#039;all&#039;&#039; of the specified feature(s).&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains &#039;&#039;any&#039;&#039; of the specified feature(s). Functionally identical to &amp;lt;tt&amp;gt;--and-feature&amp;lt;/tt&amp;gt; if only one feature is specified.&lt;br /&gt;
&lt;br /&gt;
These arguments are also viewable by running &amp;lt;code&amp;gt;show_available_nodes -h&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If your passed argument set does not contain any resource-based arguments (CPUs/RAM/GRES or GPUs), a node is defined as available if it has at least 1 CPU and 1MB of RAM available.&lt;br /&gt;
&lt;br /&gt;
If there are no nodes available that meet your passed argument set, you will receive the message &amp;lt;tt&amp;gt;There are no nodes that have currently free resources that meet this argument set.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Footnotes===&lt;br /&gt;
[0] - As of now, this command alias does not factor in resources occupied by jobs that could be preempted (based on the partition(s) passed to it, if present). This is something that we are working on implementing.&lt;br /&gt;
&lt;br /&gt;
[1] - This command alias also does not factor in jobs with higher priority values requesting more resources, in the same partition(s), blocking execution of a job submitted with the resources / other arguments checked by the command alias. This is due to the infeasibility of calculating a job&#039;s priority value before it is actually submitted.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
Show all available nodes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes&lt;br /&gt;
brigid17&lt;br /&gt;
  cpus=16,mem=414593M&lt;br /&gt;
brigid18&lt;br /&gt;
  cpus=8,mem=24875M&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes available in the &amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition tron&lt;br /&gt;
tron00&lt;br /&gt;
  cpus=14,mem=50433M,gres=gpu:rtxa6000:1&lt;br /&gt;
tron01&lt;br /&gt;
  cpus=10,mem=17665M,gres=gpu:rtxa6000:2&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with one or more RTX A5000 or RTX A6000 GPUs available to the &amp;lt;tt&amp;gt;vulcan&amp;lt;/tt&amp;gt; account:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --account vulcan --or-gpus rtxa5000:1,rtxa6000:1&lt;br /&gt;
vulcan32&lt;br /&gt;
  cpus=16,mem=193778M,gres=gpu:rtxa6000:4&lt;br /&gt;
vulcan33&lt;br /&gt;
  cpus=15,mem=181499M,gres=gpu:rtxa5000:3&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with 4 or more CPUs, 48G or more memory, and one or more RTX A6000 GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --cpus=4 --mem=48g --or-gpus=rtxa6000:1&lt;br /&gt;
cbcb27&lt;br /&gt;
  cpus=59,mem=218303M,gres=gpu:rtxa6000:6&lt;br /&gt;
clip06&lt;br /&gt;
  cpus=20,mem=93448M,gres=gpu:rtxa6000:1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with [https://en.wikipedia.org/wiki/Turing_(microarchitecture) Turing] or [https://en.wikipedia.org/wiki/Ampere_(microarchitecture) Ampere] architecture GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --or-feature=Ampere,Turing&lt;br /&gt;
cbcb25&lt;br /&gt;
  cpus=24,mem=255278M,gres=gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
cbcb26&lt;br /&gt;
  cpus=127,mem=447707M,gres=gpu:rtxa5000:7&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Show nodes with [https://en.wikipedia.org/wiki/Zen_(microarchitecture) Zen] architecture CPUs and [https://en.wikipedia.org/wiki/Ampere_(microarchitecture) Ampere] architecture GPUs available in the &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=scavenger --and-feature=Zen,Ampere&lt;br /&gt;
cbcb26&lt;br /&gt;
  cpus=127,mem=447707M,gres=gpu:rtxa5000:7&lt;br /&gt;
cbcb27&lt;br /&gt;
  cpus=59,mem=218303M,gres=gpu:rtxa6000:6&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(bogus example) Attempt to show nodes available in the &amp;lt;tt&amp;gt;bogus&amp;lt;/tt&amp;gt; partition:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_available_nodes --partition=bogus&lt;br /&gt;
There are no nodes that have currently free resources that meet this argument set.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Requesting GPUs=&lt;br /&gt;
If you need to do processing on a GPU, you will need to request that your job have access to GPUs just as you need to request processors or CPU cores. In SLURM, GPUs are considered &amp;quot;generic resources&amp;quot; also known as GRES. To request some number of GPUs be reserved/available for your job, you can use the flag &amp;lt;code&amp;gt;--gres=gpu:#&amp;lt;/code&amp;gt; (with the actual number of GPUs you want). If there are multiple types of GPUs available in the cluster and you need a specific type, you can provide the type option to the gres flag e.g. &amp;lt;code&amp;gt;--gres=gpu:rtxa5000:#&amp;lt;/code&amp;gt;. If you do not request a specific type of GPU, you are likely to be scheduled on an older, lower spec&#039;d GPU.&lt;br /&gt;
&lt;br /&gt;
Note that some QoSes may have limits on the number of GPUs you can request per job, so you may need to specify a different QoS to request more GPUs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=medium --gres=gpu:2 nvidia-smi&lt;br /&gt;
...&lt;br /&gt;
Wed Mar  6 16:59:39 2024&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |&lt;br /&gt;
|-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                      |               MIG M. |&lt;br /&gt;
|=========================================+======================+======================|&lt;br /&gt;
|   0  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:3D:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   23C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
|   1  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:40:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   25C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                            |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |&lt;br /&gt;
|        ID   ID                                                             Usage      |&lt;br /&gt;
|=======================================================================================|&lt;br /&gt;
|  No running processes found                                                           |&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that your job will only be able to see/access the GPUs you requested. If you only need 1 GPU, please only request 1 GPU. The others on the node (if any) will be left available for other users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --gres=gpu:rtxa5000:1 nvidia-smi&lt;br /&gt;
Thu Aug 25 15:22:15 2022&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 470.129.06   Driver Version: 470.129.06   CUDA Version: 11.4     |&lt;br /&gt;
|-------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                               |                      |               MIG M. |&lt;br /&gt;
|===============================+======================+======================|&lt;br /&gt;
|   0  NVIDIA RTX A5000    Off  | 00000000:01:00.0 Off |                  Off |&lt;br /&gt;
| 30%   23C    P8    20W / 230W |      0MiB / 24256MiB |      0%      Default |&lt;br /&gt;
|                               |                      |                  N/A |&lt;br /&gt;
+-------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                       GPU Memory |&lt;br /&gt;
|  GPU       PID  Type  Process name                               Usage      |&lt;br /&gt;
|=============================================================================|&lt;br /&gt;
|  No running processes found                                                 |&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As with all other flags, the &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt; flag may also be passed to [[#sbatch | sbatch]] and [[#salloc | salloc]] rather than directly to [[#srun | srun]].&lt;br /&gt;
&lt;br /&gt;
=MPI example=&lt;br /&gt;
To run [https://en.wikipedia.org/wiki/Message_Passing_Interface MPI] jobs, you will need to include the &amp;lt;code&amp;gt;--mpi=pmix&amp;lt;/code&amp;gt; flag in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash &lt;br /&gt;
#SBATCH --job-name=mpi_test # Job name &lt;br /&gt;
#SBATCH --nodes=4 # Number of nodes &lt;br /&gt;
#SBATCH --ntasks=8 # Number of MPI ranks &lt;br /&gt;
#SBATCH --ntasks-per-node=2 # Number of MPI ranks per node &lt;br /&gt;
#SBATCH --ntasks-per-socket=1 # Number of tasks per processor socket on the node &lt;br /&gt;
#SBATCH --time=00:30:00 # Time limit hrs:min:sec &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix /nfshomes/username/testing/mpi/a.out &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13365</id>
		<title>MonthlyMaintenanceWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=MonthlyMaintenanceWindow&amp;diff=13365"/>
		<updated>2026-08-21T12:51:00Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[HelpDesk | UMIACS staff]] takes a monthly maintenance window to patch and reboot all UMIACS-supported hosts and services.  This provides a way for staff to ensure security updates are installed and applied on the numerous different platforms and appliances that UMIACS runs.&lt;br /&gt;
&lt;br /&gt;
The window for each month is calculated by adding 9 days to [https://en.wikipedia.org/wiki/Patch_Tuesday Microsoft&#039;s Patch Tuesday] to allow for enough time to marshal patches released that month from Microsoft, Red Hat, Apple, and other OS and application vendors and have enough time to get systems prepared to reboot.  This translates to the window being on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month.  The window lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Nexus]] will always have a reservation in place from 4:45pm-8pm on the day of the upcoming window to prevent jobs from being scheduled on compute nodes. The 15-minute addition before the start of the window is to allow jobs to fully end. Any job submitted before the reservation begins that has a time limit that would run into the reservation will be held until at least the end of the reservation - 8pm on the day of the window. This is to prevent issues with jobs failing to end properly causing delays in work we have scheduled during the window.&lt;br /&gt;
&lt;br /&gt;
A list of upcoming maintenance windows is as follows, with the next one in bold. Again, the window is on the &#039;&#039;&#039;Thursday that occurs between the 17th and the 23rd (inclusive)&#039;&#039;&#039; of each month, and lasts from &#039;&#039;&#039;5pm-8pm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;September 17th 2026&#039;&#039;&#039;&lt;br /&gt;
* October 22nd 2026&lt;br /&gt;
* November 19th 2026&lt;br /&gt;
* December 17th 2026&lt;br /&gt;
&lt;br /&gt;
==Archives==&lt;br /&gt;
* January 17th 2013 - BEGIN time of 8pm-12am for this window through February 20th 2020&lt;br /&gt;
* February 21st 2013&lt;br /&gt;
* March 21st 2013&lt;br /&gt;
* April 18th 2013&lt;br /&gt;
* May 23rd 2013&lt;br /&gt;
* June 20th 2013&lt;br /&gt;
* July 18th 2013&lt;br /&gt;
* August 22nd 2013&lt;br /&gt;
* September 19th 2013&lt;br /&gt;
* October 17th 2013&lt;br /&gt;
* December 19th 2013&lt;br /&gt;
* January 23rd 2014&lt;br /&gt;
* February 20th 2014&lt;br /&gt;
* March 20th 2014&lt;br /&gt;
* April 17th 2014&lt;br /&gt;
* May 22nd 2014&lt;br /&gt;
* June 19th 2014&lt;br /&gt;
* July 17th 2014&lt;br /&gt;
* August 21st 2014&lt;br /&gt;
* September 18th 2014&lt;br /&gt;
* October 23rd 2014&lt;br /&gt;
* November 20th 2014&lt;br /&gt;
* December 18th 2014&lt;br /&gt;
* January 22nd 2015&lt;br /&gt;
* February 19th 2015&lt;br /&gt;
* March 19th 2015&lt;br /&gt;
* May 21st 2015&lt;br /&gt;
* June 18th 2015&lt;br /&gt;
* July 23rd 2015&lt;br /&gt;
* August 20th 2015&lt;br /&gt;
* September 17th 2015&lt;br /&gt;
* October 22nd 2015&lt;br /&gt;
* November 19th 2015&lt;br /&gt;
* December 17th 2015&lt;br /&gt;
* January 21st 2016&lt;br /&gt;
* February 18th 2016&lt;br /&gt;
* March 12th 2016 (Adjusted date for AVW power outage)&lt;br /&gt;
* April 21st 2016&lt;br /&gt;
* May 19th 2016&lt;br /&gt;
* June 23rd 2016&lt;br /&gt;
* July 21st 2016&lt;br /&gt;
* August 18th 2016&lt;br /&gt;
* September 22nd 2016&lt;br /&gt;
* October 20th 2016&lt;br /&gt;
* November 17th 2016&lt;br /&gt;
* December 22nd 2016&lt;br /&gt;
* January 19th 2017&lt;br /&gt;
* February 23rd 2017&lt;br /&gt;
* March 23rd 2017&lt;br /&gt;
* April 20th 2017&lt;br /&gt;
* May 18th 2017&lt;br /&gt;
* June 22nd 2017&lt;br /&gt;
* July 20th 2017&lt;br /&gt;
* August 17th 2017&lt;br /&gt;
* September 21st 2017&lt;br /&gt;
* October 19th 2017&lt;br /&gt;
* December 21st 2017&lt;br /&gt;
* January 18th 2018&lt;br /&gt;
* February 22nd 2018&lt;br /&gt;
* March 22nd 2018&lt;br /&gt;
* April 19th 2018&lt;br /&gt;
* May 17th 2018&lt;br /&gt;
* June 21st 2018&lt;br /&gt;
* July 19th 2018&lt;br /&gt;
* August 23rd 2018&lt;br /&gt;
* September 20th 2018&lt;br /&gt;
* October 18th 2018&lt;br /&gt;
* December 20th 2018&lt;br /&gt;
* January 24th 2019&lt;br /&gt;
* February 21st 2019&lt;br /&gt;
* April 18th 2019&lt;br /&gt;
* May 23rd 2019&lt;br /&gt;
* June 20th 2019&lt;br /&gt;
* July 18th 2019&lt;br /&gt;
* August 22nd 2019&lt;br /&gt;
* September 19th 2019&lt;br /&gt;
* October 17th 2019&lt;br /&gt;
* November 21st 2019&lt;br /&gt;
* December 19th 2019&lt;br /&gt;
* January 23rd 2020&lt;br /&gt;
* February 20th 2020&lt;br /&gt;
* April 23rd 2020 - BEGIN time of 5pm-7pm for this window through August 19th 2021&lt;br /&gt;
* June 18th 2020&lt;br /&gt;
* July 23rd 2020&lt;br /&gt;
* August 20th 2020&lt;br /&gt;
* September 17th 2020&lt;br /&gt;
* October 22nd 2020&lt;br /&gt;
* November 19th 2020&lt;br /&gt;
* December 17th 2020&lt;br /&gt;
* January 21st 2021&lt;br /&gt;
* February 18th 2021&lt;br /&gt;
* March 25th 2021 (Adjusted date for extended Spring Break)&lt;br /&gt;
* April 22nd 2021&lt;br /&gt;
* May 20th 2021&lt;br /&gt;
* June 17th 2021&lt;br /&gt;
* July 22nd 2021&lt;br /&gt;
* August 19th 2021&lt;br /&gt;
* September 23rd 2021 - BEGIN time of 5pm-8pm for this window and all others below&lt;br /&gt;
* October 21st 2021&lt;br /&gt;
* November 18th 2021&lt;br /&gt;
* January 20th 2022&lt;br /&gt;
* February 17th 2022&lt;br /&gt;
* March 24th 2022 (Adjusted date for Spring Break)&lt;br /&gt;
* April 21st 2022&lt;br /&gt;
* May 19th 2022&lt;br /&gt;
* June 23rd 2022&lt;br /&gt;
* July 21st 2022&lt;br /&gt;
* August 18th 2022&lt;br /&gt;
* September 22nd 2022&lt;br /&gt;
* October 20th 2022&lt;br /&gt;
* November 17th 2022&lt;br /&gt;
* January 19th 2023&lt;br /&gt;
* February 23rd 2023&lt;br /&gt;
* April 20th 2023&lt;br /&gt;
* May 18th 2023&lt;br /&gt;
* June 22nd 2023&lt;br /&gt;
* July 20th 2023&lt;br /&gt;
* August 17th 2023&lt;br /&gt;
* September 21st 2023&lt;br /&gt;
* October 19th 2023&lt;br /&gt;
* December 20th 2023 (Adjusted date for early Winter Break)&lt;br /&gt;
* January 18th 2024&lt;br /&gt;
* February 22nd 2024&lt;br /&gt;
* March 21st 2024&lt;br /&gt;
* April 18th 2024&lt;br /&gt;
* May 23th 2024&lt;br /&gt;
* June 20th 2024&lt;br /&gt;
* July 18th 2024&lt;br /&gt;
* August 22nd 2024&lt;br /&gt;
* September 19th 2024&lt;br /&gt;
* October 17th 2024&lt;br /&gt;
* November 21st 2024&lt;br /&gt;
* December 19th 2024&lt;br /&gt;
* January 23rd 2025&lt;br /&gt;
* February 20th 2025&lt;br /&gt;
* March 20th 2025&lt;br /&gt;
* April 17th 2025&lt;br /&gt;
* May 22nd 2025&lt;br /&gt;
* June 19th 2025&lt;br /&gt;
* July 17th 2025&lt;br /&gt;
* August 21st 2025&lt;br /&gt;
* September 18th 2025&lt;br /&gt;
* October 23rd 2025&lt;br /&gt;
* November 20th 2025&lt;br /&gt;
* December 18th 2025&lt;br /&gt;
* January 22nd 2026&lt;br /&gt;
* February 19th 2026&lt;br /&gt;
* March 19th 2026&lt;br /&gt;
* April 23rd 2026&lt;br /&gt;
* May 28th 2026 (Adjusted date for CIO-imposed network change freeze)&lt;br /&gt;
* June 18th 2026&lt;br /&gt;
* July 23rd 2026&lt;br /&gt;
* August 20th 2026&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=OBJ&amp;diff=13362</id>
		<title>OBJ</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=OBJ&amp;diff=13362"/>
		<updated>2026-08-19T20:05:34Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Access Key and Secret Key */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= UMIACS Object Store =&lt;br /&gt;
An object store is a web-based storage solution focused on reliability, scalability, and security. It is best suited for public content storage/distribution, archiving data, or secure data sharing between users. Our Object Store can be used through the [https://obj.umiacs.umd.edu/obj web interface], the command line [[UMobj]] utilities, third-party graphical [[S3Clients | clients]], and even programmatically using many popular programming languages. We support a subset of the Amazon Simple Storage Services [http://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html (S3) API], built around a technology called [http://ceph.com/ Ceph].&lt;br /&gt;
&lt;br /&gt;
All data in our Object Store is stored on hard drives located in a datacenter managed by [[HelpDesk | UMIACS Staff]].&lt;br /&gt;
&lt;br /&gt;
= Terminology =&lt;br /&gt;
S3-like storage thinks in terms of buckets and keys. Keys are analogous to files. A bucket is simply a container to a set of keys. There is no actual hierarchy inside of a bucket, but the standard UNIX path separator, a forward slash (/) at the end of a Key name, is interpreted by many clients (including this web site and our UMobj utilities) as being a directory delimiter. This allows you to copy data from your local filesystems to your buckets through umobj or third-party clients. You may specify who has what types of access to your buckets via Access Control Lists (ACLs) at the bucket level or the individual key level.&lt;br /&gt;
&lt;br /&gt;
Your data is protected from individual machine failure via replication within the cluster. All data is checksummed in accordance with the Amazon S3 protocol to ensure that data in transit is valid before it is accepted by the cluster. However, there are no backups or snapshots of this data in the cluster, so &#039;&#039;&#039;if you delete a key or bucket in the Object Store, there is no way to restore that information&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
Non-faculty UMIACS user accounts are allocated 50GB of storage, and faculty accounts are allocated 10TB. To get started, [https://obj.umiacs.umd.edu/obj log in] and you will be redirected to the initial help page. You can also find the link from our https://intranet.umiacs.umd.edu site as &amp;quot;OBJbox Object Store&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Buckets =&lt;br /&gt;
You can create and browse your buckets (containers that hold data) by visiting your [https://obj.umiacs.umd.edu/obj/buckets/ buckets] page. You can also set bucket-level Access Control Lists (ACLs) from this page. Bucket-level ACLs get implicitly inherited to all the keys within the bucket. However, individual keys can have additional specific ACLs applied for more granular control.&lt;br /&gt;
&lt;br /&gt;
Bucket names must be unique. When you create a bucket it will notify you if the name is already taken.&lt;br /&gt;
&lt;br /&gt;
= Keys (files) =&lt;br /&gt;
After selecting a bucket, you will be able to create folders and upload files within that bucket. Listed files can be downloaded, deleted, or assigned a specific ACL by the key owner/creator.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note: Local file system ownership and permissions, and special files (such as symlinks) can not be represented in the Object Store. We highly suggest that if you are securing data into the Object Store and need these to be faithfully maintained that you use a local archive tool (tar, zip, etc..) to collect the data and then upload the resulting archive file(s).&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Hosting a Website in your Bucket =&lt;br /&gt;
Please visit [[OBJ/WebHosting]] for more information.&lt;br /&gt;
&lt;br /&gt;
= Deleting Keys (files) =&lt;br /&gt;
Within the web interface you can delete files one-by-one. If you want to remove a bunch of files, you will need to use a different client as described below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is dangerous as there are no backups of files in the Object Store. Be careful to only delete the data you intend to delete.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Clients =&lt;br /&gt;
There are several clients that can be used (sometimes with a limited set of features) on your desktop to gain access to the Object Store. All supported UMIACS systems running RHEL8 have a copy of our [https://gitlab.umiacs.umd.edu/staff/umobj/blob/master/README.md#umobj UMobj] utilities preinstalled which provide command line access to the Object Store. We also have an article in our wiki on [[S3Clients | third party clients]] that lists and explains the details. These clients need to be configured with your Access and Secret Keys as described below.&lt;br /&gt;
&lt;br /&gt;
= Access Key and Secret Key =&lt;br /&gt;
You have one or more pairs of Access Keys and Secret Keys that are used as credentials to not expose your UMD passphrase when using the Object Store. These can be obtained by clicking on your [https://obj.umiacs.umd.edu/obj/user/ username] in the upper right-hand corner. You&#039;ll use these to identify and authenticate yourself to the Object Store.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please treat your Secret Key(s) with the same confidentiality as a passphrase and do not plaintext it over email or otherwise or share it with any other individuals.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Each Access Key and Secret Key are specific to a particular object store, so if you are accessing multiple object stores you may want to write the credentials for each to separate files and then source each file when you want to use the associated object store. Please [[HelpDesk | contact staff]] if you have any questions.&lt;br /&gt;
&lt;br /&gt;
= LabGroups =&lt;br /&gt;
LabGroups allow a group of users to share data while avoiding the need for complex ACLs by maintaining group ownership. Designated LabGroup managers can grant granular access (read, write, full control, manager) to buckets owned by the LabGroup. All objects owned by a LabGroup count against the group&#039;s quota rather than an individual&#039;s. LabGroups can be navigated using the menu with your username in the top right corner of the page. &#039;&#039;&#039;Note:&#039;&#039;&#039; this will only appear if you are a member of at least one LabGroup. At this point, you can browse the Object Store as the LabGroup and obtain your unique Access Key and Secret Key pair using the instructions above. To switch to another LabGroup or back to your own buckets, click the menu again and select the other group or your username.&lt;br /&gt;
&lt;br /&gt;
= Managing LabGroups =&lt;br /&gt;
LabGroups have many different levels of membership: &#039;&#039;&#039;Managers, FULL_CONTROL, READ/WRITE,&#039;&#039;&#039; and &#039;&#039;&#039;READ&#039;&#039;&#039;. Managers can add or remove LabGroup Members while every other access level cannot. If you hold the Manager role in a LabGroup, you can add and remove users using the [https://obj.umiacs.umd.edu/obj/labgroup/list/ Manage LabGroups] page, which is available under the Manage menu at the top of the page. After selecting a LabGroup, you can add users by typing their username into the search field and selecting a membership role.&lt;br /&gt;
&lt;br /&gt;
= Requesting a LabGroup =&lt;br /&gt;
To request a LabGroup for your project, please [[HelpDesk | contact staff]].&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=UMobj&amp;diff=13361</id>
		<title>UMobj</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=UMobj&amp;diff=13361"/>
		<updated>2026-08-19T20:01:40Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|&#039;&#039;&#039;UMobj has been deprecated in favor of the MinIO Client. Please see [[MinIO_Client]].&#039;&#039;&#039;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The UMobj suite of utilities provide command-line access to the [https://obj.umiacs.umd.edu/obj UMIACS Object Store].  UMobj is preinstalled on all UMIACS-supported RHEL8 machines. For other operating systems or non UMIACS-supported hosts, we encourage use of one of the many [[S3Clients#Command_Line_Clients | third-party command line clients]] that exist.&lt;br /&gt;
&lt;br /&gt;
==When to use UMobj==&lt;br /&gt;
Use umobj if:&lt;br /&gt;
* You are using a UMIACS-supported RHEL8 machine&lt;br /&gt;
* You have a large number of files to upload (hundreds or thousands of files)&lt;br /&gt;
* You are uploading large files (files greater than 4GB in size)&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
We highly recommend setting a few environmental variables containing your credentials for&lt;br /&gt;
convenience.  When logged into the Object Store web interface (see list above), you can&lt;br /&gt;
find these credentials on the user page.  E.g. https://obj.umiacs.umd.edu/obj/user/&lt;br /&gt;
&lt;br /&gt;
For example, if you use the &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; shell, you can add something like the following to your&lt;br /&gt;
&amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;.bash_profile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export OBJ_ACCESS_KEY_ID=&amp;quot;&amp;lt;ACCESS_KEY&amp;gt;&amp;quot;&lt;br /&gt;
export OBJ_SECRET_ACCESS_KEY=&amp;quot;&amp;lt;SECRET_KEY&amp;gt;&amp;quot;&lt;br /&gt;
export OBJ_SERVER=&amp;quot;obj.umiacs.umd.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, in tcsh, you can do the following or add it into your &amp;lt;tt&amp;gt;.tcshrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setenv OBJ_ACCESS_KEY_ID &amp;quot;&amp;lt;ACCESS_KEY&amp;gt;&amp;quot;&lt;br /&gt;
setenv OBJ_SECRET_ACCESS_KEY &amp;quot;&amp;lt;SECRET_KEY&amp;gt;&amp;quot;&lt;br /&gt;
setenv OBJ_SERVER &amp;quot;obj.umiacs.umd.edu&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(substituting in your actual &amp;lt;ACCESS_KEY&amp;gt; and &amp;lt;SECRET_KEY&amp;gt; for your personal account or [[OBJ#LabGroups | LabGroup]] in the [https://obj.umiacs.umd.edu/obj/user/ Object Store]).&lt;br /&gt;
&lt;br /&gt;
==Detailed Usage==&lt;br /&gt;
For an example of how to use UMobj, please see [[UMobj/Example]].&lt;br /&gt;
&lt;br /&gt;
For complete usage information, please see the [[GitLab]] page for [https://gitlab.umiacs.umd.edu/staff/umobj/blob/master/README.md#umobj umobj].&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=13339</id>
		<title>Nexus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=13339"/>
		<updated>2026-08-12T15:29:20Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Note|All Nexus cluster nodes have been upgraded from RHEL8 to RHEL9 as of 08/06/2026. Please see [[Nexus/ClusterOSUpgrade]] for more information.}}&lt;br /&gt;
&lt;br /&gt;
The Nexus is the combined scheduler of resources in UMIACS.  The resource manager for Nexus is [[SLURM]].  Resources are arranged into partitions where users are able to schedule computational jobs.  Users are arranged into a number of SLURM accounts based on faculty, lab, or center investments.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
All accounts in UMIACS are sponsored.  If you don&#039;t already have a UMIACS account, please see [[Accounts]] for information on getting one.  You need a full UMIACS account - not a [[Accounts/Collaborator | collaborator account]] - in order to access Nexus.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
Your access to submission nodes (alternatively called login nodes) for Nexus computational resources is determined by your account sponsor&#039;s department, center, or lab affiliation.  You can log into the [https://intranet.umiacs.umd.edu/directory/cr/ UMIACS Directory CR application] and select the Computational Resource (CR) in the list that has the prefix &amp;lt;code&amp;gt;nexus&amp;lt;/code&amp;gt;.  The Hosts section lists your available submission nodes - generally a pair of nodes with hostnames of the format &amp;lt;tt&amp;gt;nexus&amp;lt;department, lab, or center abbreviation&amp;gt;[00,01]&amp;lt;/tt&amp;gt;, e.g., &amp;lt;tt&amp;gt;nexusgroup00&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nexusgroup01&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Once you have identified your submission nodes, you can [[SSH]] into them [https://itsupport.umd.edu/itsupport?id=kb_article_view&amp;amp;sysparm_article=KB0016076 after connecting to UMD&#039;s GlobalProtect VPN].  From there, you are able to submit to the cluster via our [[SLURM]] workload manager.  You need to make sure that your submitted jobs have the correct account, partition, and qos.&lt;br /&gt;
&lt;br /&gt;
Please read our [[Nexus/Submission_Node_Policy|Submission Node Policy]] for guidance on appropriate usage of a submission node. If a submission node becomes unresponsive due to disregarding this policy, &amp;lt;b&amp;gt;we may kill user processes on these nodes to resolve the issue&amp;lt;/b&amp;gt;. We reserve the right to take action on users who repeatedly cause issues on submission nodes.&lt;br /&gt;
&lt;br /&gt;
== Jobs ==&lt;br /&gt;
[[SLURM]] jobs are [[SLURM/JobSubmission | submitted]] by either &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; depending if you are doing an interactive job or batch job, respectively.  You need to provide the where/how/who to run the job and specify the resources you need to run with.&lt;br /&gt;
&lt;br /&gt;
For the who/where/how, you may be required to specify &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; (respectively) to be able to adequately submit jobs to the Nexus.&lt;br /&gt;
&lt;br /&gt;
For resources, you may need to specify &amp;lt;code&amp;gt;--time&amp;lt;/code&amp;gt; for time, &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; for CPUs, &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; for RAM, and &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt; for GPUs in your submission arguments to meet your requirements.  There are defaults for all four; if you don&#039;t specify something, you will get the default value for that resource, which is minimal (e.g., by default, NO GPUs are included if you do not specify &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt;).  For more information about submission flags for GPU resources, see [[SLURM/JobSubmission#Requesting_GPUs | here]].  You may also use &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; to specify the number of parallel processes to run, with each task having its own set of the resources specified above. You can run &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt; on your submission node for a complete list of available submission arguments.&lt;br /&gt;
&lt;br /&gt;
For a list of available GPU types on Nexus and their specs, please see [[Nexus/GPUs]].&lt;br /&gt;
&lt;br /&gt;
For details on how the network for Nexus is architected, please see [[Nexus/Network]]. This can be important if you wish to optimize performance of your jobs.&lt;br /&gt;
&lt;br /&gt;
=== Interactive ===&lt;br /&gt;
Once logged into a submission node, you can run simple interactive jobs.  If your session is interrupted from the submission node, the job will be killed.  As such, we encourage use of a terminal multiplexer such as [[Tmux]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --cpus-per-task=4 --mem=2gb --gres=gpu:1 bash&lt;br /&gt;
srun: Job account was unset; set to user default of &#039;nexus&#039;&lt;br /&gt;
srun: Job partition was unset; set to cluster default of &#039;tron&#039;&lt;br /&gt;
srun: Job QoS was unset; set to association default of &#039;default&#039;&lt;br /&gt;
srun: Job time limit was unset; set to partition default of 60 minutes&lt;br /&gt;
srun: job 1 queued and waiting for resources&lt;br /&gt;
srun: job 1 has been allocated resources&lt;br /&gt;
$ hostname&lt;br /&gt;
tron62.umiacs.umd.edu&lt;br /&gt;
$ nvidia-smi -L&lt;br /&gt;
GPU 0: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-daad6a04-a2ce-1183-ce53-b267048f750a)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch ===&lt;br /&gt;
Batch jobs are scheduled with a script file with an optional ability to embed job scheduling parameters via variables that are defined by &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; lines at the top of the file.  You can find some examples in our [[SLURM/JobSubmission]] documentation.&lt;br /&gt;
&lt;br /&gt;
= Partitions = &lt;br /&gt;
The SLURM resource manager uses partitions to act as job queues which can restrict size, time and user limits. The Nexus has a number of different partitions of resources. Different Centers, Labs, and Faculty are able to invest in computational resources that are restricted to approved users through these partitions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by all non-[[ClassAccounts |class account]] users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/Tron]] - Pool of resources available to all non-class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
* Scavenger - [https://slurm.schedmd.com/preempt.html Preemption] partition that contains [https://en.wikipedia.org/wiki/X86-64 x86_64] architecture nodes from multiple other partitions. More resources are available to schedule simultaneously than in other partitions, however jobs are subject to preemption rules. You are responsible for ensuring your jobs handle this preemption correctly. The SLURM scheduler will simply restart a preempted job with the same submission arguments when it is available to run again. For an overview of things you can check within scripts to determine if your job was preempted/resumed, see [[SLURM/Preemption]].&lt;br /&gt;
* Scavenger (aarch64) - Preemption partition identical in design to &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt;, but only contains [https://en.wikipedia.org/wiki/AArch64 aarch64] architecture nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by [[ClassAccounts]]:&#039;&#039;&#039;&lt;br /&gt;
* [[ClassAccounts#Cluster_Usage | Class]] - Pool of resources available to class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by specific lab/center users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/CBCB]] - CBCB lab pool available for CBCB lab members.&lt;br /&gt;
* [[Nexus/CLIP]] - CLIP lab pool available for CLIP lab members.&lt;br /&gt;
* [[Nexus/CML]] - CML lab pool available for CML lab members.&lt;br /&gt;
* [[Nexus/GAMMA]] - GAMMA lab pool available for GAMMA lab members.&lt;br /&gt;
* [[Nexus/MBRC]] - MBRC lab pool available for MBRC lab members.&lt;br /&gt;
* [[Nexus/MC2]] - MC2 lab pool available for MC2 lab members.&lt;br /&gt;
* [[Nexus/QuICS]] - QuICS lab pool available for QuICS lab members.&lt;br /&gt;
* [[Nexus/Vulcan]] - Vulcan lab pool available for Vulcan lab members.&lt;br /&gt;
&lt;br /&gt;
You can view the partitions that you have access to by using the &amp;lt;code&amp;gt;show_partitions&amp;lt;/code&amp;gt; command. By default, the command will show only the partitions that are available to you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partitions&lt;br /&gt;
                    Name           AllowAccounts                       AllowQos    MaxNodes                        Nodes&lt;br /&gt;
------------------------ ----------------------- ------------------------------ ----------- ----------------------------               &lt;br /&gt;
               scavenger               scavenger                      scavenger   UNLIMITED                brigid[16-19]                                                                                                             &lt;br /&gt;
                                                                                                             cbcb[00-29]                                                                                                             &lt;br /&gt;
                                                                                                             clip[00-13]                                                                                               &lt;br /&gt;
                                                                                               cml[00,02-13,15-28,30-33]                                                                                                     &lt;br /&gt;
                                                                                                         gammagpu[00-21]                                                                                               &lt;br /&gt;
                                                                                               legacy[00-11,13-28,30-36]                                                                                                        &lt;br /&gt;
                                                                                                        legacygpu[00-07]                                                                                                                 &lt;br /&gt;
                                                                                                                 quics00                                                                                                       &lt;br /&gt;
                                                                                                             tron[00-69]                                                                                                           &lt;br /&gt;
                                                                                                           vulcan[00-45]&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
       scavenger-aarch64               scavenger              scavenger-aarch64   UNLIMITED                 oasis[00-39]&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------                    &lt;br /&gt;
                    tron                   nexus                        default   UNLIMITED                  tron[00-69]                                                                           &lt;br /&gt;
                                                                           high                                                                                                                  &lt;br /&gt;
                                                                         medium                                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see information for all of the partitions, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_partitions --all&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partitions --all&lt;br /&gt;
                    Name           AllowAccounts                       AllowQos    MaxNodes                        Nodes&lt;br /&gt;
------------------------ ----------------------- ------------------------------ ----------- ----------------------------                    &lt;br /&gt;
                    cbcb                    cbcb                        default   UNLIMITED            cbcb[00-20,22-29]                                                                         &lt;br /&gt;
                                                                         medium                legacy[00-11,13-28,30-36]                                                                           &lt;br /&gt;
                                                                           high                                                                                                               &lt;br /&gt;
                                                                      huge-long                                                                                                                 &lt;br /&gt;
                                                                        highmem                                         &lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
               cbcb-heng               cbcb-heng                        default   UNLIMITED                  cbcb[26-29]                                                                         &lt;br /&gt;
                                                                         medium                                                                                                                     &lt;br /&gt;
                                                                           high                                                                                                               &lt;br /&gt;
                                                                      huge-long                                                                                                                 &lt;br /&gt;
                                                                        highmem                                         &lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------        &lt;br /&gt;
        cbcb-interactive                    cbcb                    interactive   UNLIMITED                       cbcb21&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Quality of Service (QoS) =&lt;br /&gt;
SLURM uses Quality of Service (QoS) both to provide limits on job sizes (termed by us as &amp;quot;job QoS&amp;quot;) as well as to limit resources used by all jobs running in a partition, either per user or per group (termed by us as &amp;quot;partition QoS&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Job QoS ===&lt;br /&gt;
Job QoS are used to provide limits on the size of job that you can run. You should try to allocate only the resources your job actually needs, as resources that each of your jobs schedules are counted against your [[SLURM/Priority#Fair-share | fair-share priority]] in the future.&lt;br /&gt;
* default - Default job QoS. Limited to 4 CPU cores, 1 GPU, and 32GB RAM per job.  The maximum wall time per job is 3 days.&lt;br /&gt;
* medium - Limited to 8 CPU cores, 2 GPUs, and 64GB RAM per job.  The maximum wall time per job is 2 days.&lt;br /&gt;
* high - Limited to 16 CPU cores, 4 GPUs, and 128GB RAM per job.  The maximum wall time per job is 1 day.&lt;br /&gt;
* scavenger - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  11% of the total resources available for each trackable resource type in the partition (CPUs/GPUs/RAM) is permitted simultaneously across all of your jobs running with this job QoS, enforced via the corresponding partition QoS (below) for the scavenger partition.  This job QoS is paired one-to-one with the scavenger partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt; in your submission arguments.  Do not include any job QoS argument other than &amp;lt;code&amp;gt;--qos=scavenger&amp;lt;/code&amp;gt; (optional) or submission will fail.&lt;br /&gt;
* scavenger-aarch64 - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  This job QoS is paired one-to-one with the scavenger-aarch64 partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger-aarch64&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;--qos=scavenger-aarch64&amp;lt;/code&amp;gt; in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
You can display these job QoS from the command line using the &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt; command.  By default, the command will only show job QoS that you can access.  The above five job QoS are the ones that everyone can access.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                          &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00                                                                         &lt;br /&gt;
   scavenger-aarch64  3-00:00:00                                                                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all job QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos --all&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU&lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------&lt;br /&gt;
             cml-cpu  7-00:00:00                                        8&lt;br /&gt;
         cml-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2&lt;br /&gt;
            cml-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2&lt;br /&gt;
       cml-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8&lt;br /&gt;
          cml-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2&lt;br /&gt;
       cml-scavenger  3-00:00:00                                                             gres/gpu=24&lt;br /&gt;
       cml-very_high  1-12:00:00     cpu=32,gres/gpu=8,mem=256G         8                    gres/gpu=12&lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G&lt;br /&gt;
     gamma-huge-long 10-00:00:00    cpu=32,gres/gpu=16,mem=256G&lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G&lt;br /&gt;
             highmem 21-00:00:00                 cpu=128,mem=2T&lt;br /&gt;
           huge-long 10-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
         interactive    12:00:00                 cpu=4,mem=128G&lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G&lt;br /&gt;
        oasis-exempt 10-00:00:00                                                      cpu=160,mem=28114M&lt;br /&gt;
           scavenger  3-00:00:00&lt;br /&gt;
   scavenger-aarch64  3-00:00:00&lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4&lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2&lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2&lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2&lt;br /&gt;
    vulcan-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8&lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2&lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48&lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
vulcan-scavenger-mu+  3-00:00:00  cpu=288,gres/gpu=72,mem=1152G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are able to submit to any partition that is listed in the &amp;lt;code&amp;gt;show_partitions&amp;lt;/code&amp;gt; command. If you need to use an account other than the default account &amp;lt;tt&amp;gt;nexus&amp;lt;/tt&amp;gt;, you will need to specify it via the &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt; submission argument.&lt;br /&gt;
&lt;br /&gt;
=== Partition QoS ===&lt;br /&gt;
Partition QoS are used to limit resources used by all jobs running in a partition, either per user (MaxTRESPU) or per group (GrpTRES).&lt;br /&gt;
&lt;br /&gt;
To view partition QoS, use the &amp;lt;code&amp;gt;show_partition_qos&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
   scavenger-aarch64_part         500                                                      &lt;br /&gt;
           scavenger_part         500     cpu=11%,gres/gpu=11%,mem=11%                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scavenger_part partition QoS has relative TRES limits based on the current hardware in a given partition, represented with percentages.  To see the current actual TRES limits of this partition QoS, you can use the &amp;lt;code&amp;gt;-r/--real&amp;lt;/code&amp;gt; argument.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos -r&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
   scavenger-aarch64_part         500                                                      &lt;br /&gt;
           scavenger_part         500  cpu=888,gres/gpu=140,mem=12574G                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all partition QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_partition_qos --all&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos --all&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
                     cbcb         500                                   cpu=1406,mem=50359G&lt;br /&gt;
                cbcb-heng         500                                                      &lt;br /&gt;
         cbcb-interactive         500                                                      &lt;br /&gt;
                    class         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
                     clip         500                                     cpu=726,mem=6939G&lt;br /&gt;
                      cml         500                                   cpu=1226,mem=12116G&lt;br /&gt;
                  cml-cpu         500                                                      &lt;br /&gt;
             cml-director         500                                                      &lt;br /&gt;
              cml-furongh         500                                                      &lt;br /&gt;
            cml-scavenger         500                      gres/gpu=24                     &lt;br /&gt;
               cml-sfeizi         500                                                      &lt;br /&gt;
                cml-wriva         500                                                      &lt;br /&gt;
           cml-wriva-high         500                                                      &lt;br /&gt;
                 csd-h200         500                                                      &lt;br /&gt;
                    gamma         500                                     cpu=906,mem=7675G&lt;br /&gt;
                     mbrc         500                                     cpu=370,mem=3571G&lt;br /&gt;
                      mc2         500                                     cpu=330,mem=3201G&lt;br /&gt;
                    oasis         500                                                      &lt;br /&gt;
                    quics         500                                     cpu=458,mem=4710G&lt;br /&gt;
   scavenger-aarch64_part         500                                                      &lt;br /&gt;
           scavenger_part         500     cpu=11%,gres/gpu=11%,mem=11%                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
                   vulcan         500                                   cpu=1402,mem=12936G&lt;br /&gt;
            vulcan-ampere         500                                                      &lt;br /&gt;
               vulcan-cpu         500                                                      &lt;br /&gt;
            vulcan-ramani         500                                                      &lt;br /&gt;
         vulcan-scavenger         500                                                      &lt;br /&gt;
   vulcan-scavenger-multi         500                                                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: These QoS cannot be used directly when submitting jobs. Partition QoS limits apply to all jobs running on a given partition, regardless of what job QoS is used.&lt;br /&gt;
&lt;br /&gt;
For example, in the default non-preemption partition (&amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt;), you are restricted to 32 total CPU cores, 4 total GPUs, and 256GB total RAM at once across all jobs you have running in the partition.&lt;br /&gt;
&lt;br /&gt;
Lab/group-specific partitions may also have their own user limits, and/or may also have group limits on the total number of resources consumed simultaneously by all users that are using their partition, codified by the line in the output above that matches their lab/group name. Note that the values listed above in the two &amp;quot;TRES&amp;quot; columns are not fixed and may fluctuate per-partition as more resources are added to or removed from each partition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;All partitions also only allow a maximum of 500 submitted (running (R) or pending (PD)) jobs per user in the partition simultaneously.&#039;&#039;&#039; This is to prevent excess pending jobs causing [https://slurm.schedmd.com/sched_config.html#backfill backfill] issues with the SLURM scheduler.&lt;br /&gt;
* If you need to submit more than 500 jobs in batch at once, you can develop and run an &amp;quot;outer submission script&amp;quot; that repeatedly attempts to run an &amp;quot;inner submission script&amp;quot; (your original submission script) to submit jobs in the batch periodically, until all job submissions are successful. The outer submission script should use looping logic to check if you are at the max job limit and should then retry submission after waiting for some time interval.&lt;br /&gt;
: An example outer submission script is as follows. In this example, &amp;lt;code&amp;gt;example_inner.sh&amp;lt;/code&amp;gt; is your inner submission script and is not an [[SLURM/ArrayJobs | array job]], and you want to run 1000 jobs. If your inner submission script is an array job, adjust the number of jobs accordingly. Array jobs must be of size 500 or less.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
numjobs=1000&lt;br /&gt;
i=0&lt;br /&gt;
while [ $i -lt $numjobs ]&lt;br /&gt;
do&lt;br /&gt;
  while [[ &amp;quot;$(sbatch example_inner.sh 2&amp;gt;&amp;amp;1)&amp;quot; =~ &amp;quot;QOSMaxSubmitJobPerUserLimit&amp;quot; ]]&lt;br /&gt;
  do&lt;br /&gt;
    echo &amp;quot;Currently at maximum job submissions allowed by the partition&#039;s QoS.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Waiting for 5 minutes before trying to submit more jobs.&amp;quot;&lt;br /&gt;
    sleep 300&lt;br /&gt;
  done&lt;br /&gt;
  i=$(( $i + 1 ))&lt;br /&gt;
  echo &amp;quot;Submitted job $i of $numjobs&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is suggested that you run the outer submission script in a [[Tmux]] session to keep the terminal window executing it from being interrupted.&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
All network storage available in Nexus is currently [[NFS]] based, and comes in a few different flavors. Compute nodes also have local scratch storage that can be used.&lt;br /&gt;
&lt;br /&gt;
== Home Directories ==&lt;br /&gt;
{{Nfshomes}}&lt;br /&gt;
&lt;br /&gt;
== Scratch Directories ==&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Nexus compute infrastructure:&lt;br /&gt;
* Network scratch directories&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
Please note that [[ClassAccounts | class accounts]] do not have network scratch directories.&lt;br /&gt;
&lt;br /&gt;
=== Network Scratch Directories ===&lt;br /&gt;
You are allocated 200GB of scratch space via NFS from &amp;lt;code&amp;gt;/fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;USERNAME&amp;gt; is your UMIACS username.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;[[Automounter | automounted]]&#039;&#039;&#039;; you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access it.&lt;br /&gt;
&lt;br /&gt;
You can view your quota usage by running &amp;lt;code&amp;gt;df -h /fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 400GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 400GB, you will need faculty approval and/or a [[#Project_Allocations | project allocation]] for this. If you choose to increase your scratch space beyond 400GB, the increased space is also subject to the 270 TB days limit mentioned in the project allocation section before we check back in for renewal. For example, if you request 1.4TB total space, you may have this for 270 days (1TB beyond the 400GB permanent increase). The amount increased beyond 400GB will also count against your faculty member&#039;s 20TB total storage limit mentioned below.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
=== Local Scratch Directories ===&lt;br /&gt;
Each computational node that you can schedule compute jobs on also has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc. and &#039;&#039;&#039;are not backed up or protected in any way.&#039;&#039;&#039;  These directories are almost always more performant than any other storage available to the job as they are mounted from disks directly attached to the compute node.  However, you must stage your data within the confines of your job and extract the relevant resultant data elsewhere before the end of your job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month during our [[MonthlyMaintenanceWindow | monthly maintenance windows]].  Please make sure you secure any resultant data you wish to keep from these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
== Faculty Allocations ==&lt;br /&gt;
Each faculty member can be allocated 1TB of permanent lab space upon request.  We can also support grouping these individual allocations together into larger center, lab, or research group allocations if desired by the faculty.  Please [[HelpDesk | contact staff]] to inquire.&lt;br /&gt;
&lt;br /&gt;
Lab space storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
== Project Allocations ==&lt;br /&gt;
Project allocations are available per user for 270 TB days; you can have a 1TB allocation for up to 270 days, a 3TB allocation for 90 days, etc..&lt;br /&gt;
&lt;br /&gt;
A single faculty member can not have more than 20TB of project allocations across all of their sponsored accounts active simultaneously. Network scratch allocation space increases beyond the 400GB permanent maximum also have the increase count against this limit (i.e., a 1TB network scratch allocation would have 600GB counted towards this limit).&lt;br /&gt;
&lt;br /&gt;
Project storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
The maximum allocation length you can request is 540 days (500GB space) and the maximum storage space you can request is 9TB (30 day length).&lt;br /&gt;
&lt;br /&gt;
To request an allocation, please [[HelpDesk | contact staff]] with the faculty member(s) that the project is under involved in the conversation.  Please include the following details:&lt;br /&gt;
* Project Name (short)&lt;br /&gt;
* Description&lt;br /&gt;
* Size (1TB, 2TB, etc.)&lt;br /&gt;
* Length in days (270 days, 135 days, etc.)&lt;br /&gt;
* Other user(s) that need to access the allocation, if any&lt;br /&gt;
&lt;br /&gt;
These allocations are available via &amp;lt;code&amp;gt;/fs/nexus-projects/&amp;lt;project name&amp;gt;&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;Renewal is not guaranteed to be available due to limits on the amount of total storage.&#039;&#039;&#039;  Near the end of the allocation period, staff will contact you and ask if you are still in need of the storage allocation.  If renewal is available, you can renew for up to another 270 TB days with reapproval from the original faculty approver.&lt;br /&gt;
* If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.&lt;br /&gt;
* If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible.&lt;br /&gt;
** If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible.&lt;br /&gt;
** If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
== Datasets ==&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/nexus-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and made available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The list of Nexus datasets we currently host can be viewed [https://info.umiacs.umd.edu/datasets/list/?q=Nexus here].&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/ClusterStatus&amp;diff=13338</id>
		<title>SLURM/ClusterStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/ClusterStatus&amp;diff=13338"/>
		<updated>2026-08-12T13:38:20Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Cluster Status=&lt;br /&gt;
SLURM offers a variety of tools to check the general status of nodes/partitions in a cluster.&lt;br /&gt;
&lt;br /&gt;
==sinfo==&lt;br /&gt;
The sinfo command will show you the status of partitions in the cluster, in alphabetical order. Passing the -N flag will show each node individually, also in alphabetical order.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo&lt;br /&gt;
PARTITION         AVAIL  TIMELIMIT  NODES  STATE NODELIST&lt;br /&gt;
cbcb                 up   infinite      9    mix cbcb[00,03,22,26-28],legacy[00,10,20]&lt;br /&gt;
cbcb                 up   infinite      3  alloc cbcb[01-02,29]&lt;br /&gt;
cbcb                 up   infinite     49   idle cbcb[04-20,23-25],legacy[01-09,11,13-19,21-28,30-31,34-35]&lt;br /&gt;
...&lt;br /&gt;
vulcan-scavenger     up   infinite     14    mix brigid[16-17],vulcan[23-25,27-30,32-33,36-37,45]&lt;br /&gt;
vulcan-scavenger     up   infinite      1  alloc vulcan35&lt;br /&gt;
vulcan-scavenger     up   infinite     34   idle brigid[18-19],vulcan[00-22,26,34,38-44]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -N&lt;br /&gt;
NODELIST     NODES         PARTITION STATE&lt;br /&gt;
brigid16         1        vulcan-cpu mix&lt;br /&gt;
brigid16         1         scavenger mix&lt;br /&gt;
brigid16         1      vulcan-dpart mix&lt;br /&gt;
brigid16         1  vulcan-scavenger mix&lt;br /&gt;
...&lt;br /&gt;
vulcan45         1     vulcan-ramani mix&lt;br /&gt;
vulcan45         1  vulcan-scavenger mix&lt;br /&gt;
vulcan45         1         scavenger mix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==scontrol==&lt;br /&gt;
The scontrol command can be used to view the status/configuration of the nodes in the cluster. If passed specific node name(s) only information about those node(s) will be displayed, otherwise all nodes will be listed. To specify multiple nodes, separate each node name by a comma (no spaces).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ scontrol show nodes tron05,tron13&lt;br /&gt;
NodeName=tron05 Arch=x86_64 CoresPerSocket=16&lt;br /&gt;
   CPUAlloc=28 CPUTot=32 CPULoad=47.32&lt;br /&gt;
   AvailableFeatures=rhel9,x86_64,Zen,EPYC-7302,Ampere&lt;br /&gt;
   ActiveFeatures=rhel9,x86_64,Zen,EPYC-7302,Ampere&lt;br /&gt;
   Gres=gpu:rtxa6000:8&lt;br /&gt;
   NodeAddr=tron05 NodeHostName=tron05 Version=21.08.5&lt;br /&gt;
   OS=Linux 4.18.0-348.20.1.el8_5.x86_64 #1 SMP Tue Mar 8 12:56:54 EST 2022&lt;br /&gt;
   RealMemory=257538 AllocMem=157696 FreeMem=197620 Sockets=2 Boards=1&lt;br /&gt;
   State=MIXED ThreadsPerCore=1 TmpDisk=0 Weight=100 Owner=N/A MCS_label=N/A&lt;br /&gt;
   Partitions=scavenger,tron&lt;br /&gt;
   BootTime=2022-04-21T17:40:51 SlurmdStartTime=2022-04-21T18:00:56&lt;br /&gt;
   LastBusyTime=2022-04-22T11:21:16&lt;br /&gt;
   CfgTRES=cpu=32,mem=257538M,billing=346,gres/gpu=8,gres/gpu:rtxa6000=8&lt;br /&gt;
   AllocTRES=cpu=28,mem=154G,gres/gpu=7,gres/gpu:rtxa6000=7&lt;br /&gt;
   CapWatts=n/a&lt;br /&gt;
   CurrentWatts=0 AveWatts=0&lt;br /&gt;
   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s&lt;br /&gt;
&lt;br /&gt;
NodeName=tron13 Arch=x86_64 CoresPerSocket=16&lt;br /&gt;
   CPUAlloc=1 CPUTot=16 CPULoad=8.41&lt;br /&gt;
   AvailableFeatures=rhel9,x86_64,Zen,EPYC-7302P,Ampere&lt;br /&gt;
   ActiveFeatures=rhel9,x86_64,Zen,EPYC-7302P,Ampere&lt;br /&gt;
   Gres=gpu:rtxa4000:4&lt;br /&gt;
   NodeAddr=tron13 NodeHostName=tron13 Version=21.08.5&lt;br /&gt;
   OS=Linux 4.18.0-348.20.1.el8_5.x86_64 #1 SMP Tue Mar 8 12:56:54 EST 2022&lt;br /&gt;
   RealMemory=128525 AllocMem=65536 FreeMem=33463 Sockets=1 Boards=1&lt;br /&gt;
   State=MIXED ThreadsPerCore=1 TmpDisk=0 Weight=10 Owner=N/A MCS_label=N/A&lt;br /&gt;
   Partitions=scavenger,tron&lt;br /&gt;
   BootTime=2022-04-21T17:40:46 SlurmdStartTime=2022-04-21T17:54:51&lt;br /&gt;
   LastBusyTime=2022-04-22T13:04:57&lt;br /&gt;
   CfgTRES=cpu=16,mem=128525M,billing=173,gres/gpu=4,gres/gpu:rtxa4000=4&lt;br /&gt;
   AllocTRES=cpu=1,mem=64G,gres/gpu=4,gres/gpu:rtxa4000=4&lt;br /&gt;
   CapWatts=n/a&lt;br /&gt;
   CurrentWatts=0 AveWatts=0&lt;br /&gt;
   ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==sacctmgr==&lt;br /&gt;
The sacctmgr command shows cluster accounting information.  One of the helpful commands is to list the available QoSes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@nexusctl00 ~]# sacctmgr list qos format=Name%20,Priority,MaxWall,MaxJobsPU&lt;br /&gt;
                Name   Priority     MaxWall MaxJobsPU&lt;br /&gt;
-------------------- ---------- ----------- ---------&lt;br /&gt;
              normal          0&lt;br /&gt;
           scavenger          0  3-00:00:00&lt;br /&gt;
              medium          0  2-00:00:00&lt;br /&gt;
                high          0  1-00:00:00&lt;br /&gt;
             default          0  3-00:00:00&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==slurm-web==&lt;br /&gt;
Slurm-web is a web dashboard for our Slurm HPC cluster. It provides cluster statistics and Slurm information for the Nexus cluster.&lt;br /&gt;
* URL: https://slurm-web.umiacs.umd.edu&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/CBCB&amp;diff=13337</id>
		<title>Nexus/CBCB</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/CBCB&amp;diff=13337"/>
		<updated>2026-08-12T13:37:49Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The compute nodes from [[CBCB]]&#039;s previous standalone cluster have folded into [[Nexus]] as of mid 2023.&lt;br /&gt;
&lt;br /&gt;
The Nexus cluster already has a large pool of compute resources made possible through college-level funding for UMIACS and CSD faculty. Details on common nodes already in the cluster (Tron partition) can be found [[Nexus/Tron | here]].&lt;br /&gt;
&lt;br /&gt;
Please [[HelpDesk | contact staff]] with any questions or concerns.&lt;br /&gt;
&lt;br /&gt;
= Submission Nodes =&lt;br /&gt;
You can [[SSH]] to &amp;lt;code&amp;gt;nexuscbcb.umiacs.umd.edu&amp;lt;/code&amp;gt; to log in to a submission node.&lt;br /&gt;
&lt;br /&gt;
If you store something in a local filesystem directory (/tmp, /scratch0) on one of the two submission nodes, you will need to connect to that same submission node to access it later. The actual submission nodes are:&lt;br /&gt;
* &amp;lt;code&amp;gt;nexuscbcb00.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nexuscbcb01.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compute Nodes = &lt;br /&gt;
All compute nodes in CBCB-owned partitions (see below section) owned by CBCB faculty are named in the format &amp;lt;code&amp;gt;cbcb##&amp;lt;/code&amp;gt;. The sets of nodes are:&lt;br /&gt;
* 22 nodes that were purchased in October 2022 with center-wide funding: cbcb[00-21]&lt;br /&gt;
* 1 node from the previous standalone CBCB cluster that moved in as of Summer 2023: cbcb25&lt;br /&gt;
* 4 additional nodes purchased by Dr. Heng Huang: cbcb[26-29]&lt;br /&gt;
* 1 additional node purchased by Dr. Mihai Pop: cbcb30&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Nodenames&lt;br /&gt;
! Quantity&lt;br /&gt;
! CPU cores per node (CPUs)&lt;br /&gt;
! Memory per node (type)&lt;br /&gt;
! Filesystem storage per node (type/location)&lt;br /&gt;
! GPUs per node (type)&lt;br /&gt;
|-&lt;br /&gt;
|cbcb[00-21]&lt;br /&gt;
|22&lt;br /&gt;
|32 (Dual [https://www.amd.com/en/products/processors/server/epyc/7003-series/amd-epyc-7313.html AMD EPYC 7313])&lt;br /&gt;
|~2TB (DDR4 3200MHz)&lt;br /&gt;
|~350GB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~2TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|cbcb25&lt;br /&gt;
|1&lt;br /&gt;
|24 (Dual [https://www.intel.com/content/www/us/en/products/sku/91767/intel-xeon-processor-e52650-v4-30m-cache-2-20-ghz/specifications.html Intel Xeon E5-2650 v4])&lt;br /&gt;
|~256GB (DDR4 2400MHz)&lt;br /&gt;
|~1.4TB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]])&lt;br /&gt;
|2 (1x [https://www.nvidia.com/en-gb/geforce/graphics-cards/geforce-gtx-1080-ti/specifications/ NVIDIA GeForce GTX 1080 Ti], 1x [https://www.nvidia.com/en-us/geforce/graphics-cards/compare/?section=compare-20 NVIDIA GeForce RTX 2080 Ti])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb26&lt;br /&gt;
|1&lt;br /&gt;
|128 (Dual [https://www.amd.com/en/products/processors/server/epyc/7003-series/amd-epyc-7763.html AMD EPYC 7763])&lt;br /&gt;
|~512GB (DDR4 3200MHz)&lt;br /&gt;
|~3.4TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~14TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|7 ([https://www.nvidia.com/en-us/design-visualization/rtx-a5000 NVIDIA RTX A5000])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb27&lt;br /&gt;
|1&lt;br /&gt;
|64 (Dual [https://www.amd.com/en/products/processors/server/epyc/7003-series/amd-epyc-7513.html AMD EPYC 7513])&lt;br /&gt;
|~256GB (DDR4 3200MHz)&lt;br /&gt;
|~3.4TB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~3.5TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|8 ([https://www.nvidia.com/en-us/design-visualization/rtx-a6000 NVIDIA RTX A6000])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb[28-29]&lt;br /&gt;
|2&lt;br /&gt;
|32 (Dual [https://www.amd.com/en/products/processors/server/epyc/4th-generation-9004-and-8004-series/amd-epyc-9124.html AMD EPYC 9124])&lt;br /&gt;
|~768GB (DDR5 4800MHz)&lt;br /&gt;
|~350GB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~7TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|8 ([https://www.nvidia.com/en-us/design-visualization/rtx-6000 NVIDIA RTX 6000 Ada Generation])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb30&lt;br /&gt;
|1&lt;br /&gt;
|48 (Single [https://www.amd.com/en/products/processors/server/epyc/9005-series/amd-epyc-9475f.html AMD EPYC 9475F])&lt;br /&gt;
|~1.15TB (DDR5 6400MHz)&lt;br /&gt;
|~350GB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~10.5TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|0&lt;br /&gt;
|- class=&amp;quot;sortbottom&amp;quot;&lt;br /&gt;
!Total&lt;br /&gt;
|28&lt;br /&gt;
|1032 (various)&lt;br /&gt;
|~49TB (various)&lt;br /&gt;
|~103TB (various)&lt;br /&gt;
|33 (various)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here is the listing of nodes as shown by the Slurm alias &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; (again, all nodes are named in the format &amp;lt;code&amp;gt;cbcb##&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@nexusctl00 ~]# show_nodes | grep cbcb&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
cbcb00               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb01               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb02               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb03               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb04               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb05               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb06               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb07               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb08               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb09               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb10               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb11               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb12               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb13               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb14               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb15               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb16               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb17               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb18               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb19               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb20               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb21               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb25               24         255278     rhel9,x86_64,Xeon,E5-2650,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:1  idle&lt;br /&gt;
cbcb26               128        513243     rhel9,x86_64,Zen,EPYC-7763,Ampere        gpu:rtxa5000:7                   idle&lt;br /&gt;
cbcb27               64         255167     rhel9,x86_64,Zen,EPYC-7513,Ampere        gpu:rtxa6000:7                   idle&lt;br /&gt;
cbcb28               32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8                 idle&lt;br /&gt;
cbcb29               32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8                 idle&lt;br /&gt;
cbcb30               48         1157583    rhel9,x86_64,EPYC,EPYC-9475F             (null)                           idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
The network infrastructure supporting the CBCB partition consists of:&lt;br /&gt;
# One pair of network switches connected to each other via dual 100GbE links for redundancy, serving the following compute nodes:&lt;br /&gt;
#* cbcb[00-21,26-30]: Two 100GbE links per node, one to each switch in the pair (redundancy).&lt;br /&gt;
# One pair of network switches connected to the above pair of network switches via four 40GbE links, one between every combination of switches across the two pairings for redundancy, and to each other via dual 10GbE links for redundancy.&lt;br /&gt;
#* cbcb25: Two 10GbE links, one to each switch in the pair (redundancy).&lt;br /&gt;
&lt;br /&gt;
For a broader overview of the network infrastructure supporting the Nexus cluster, please see [[Nexus/Network]].&lt;br /&gt;
&lt;br /&gt;
= Partitions =&lt;br /&gt;
There are two partitions available to general CBCB [[SLURM]] users. You must specify one of these two partitions when submitting your job.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cbcb&#039;&#039;&#039; - This is the default partition. Job allocations on all nodes except those also in the &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; partition are guaranteed.&lt;br /&gt;
* &#039;&#039;&#039;cbcb-interactive&#039;&#039;&#039; - This is a partition that only allows interactive jobs; you cannot submit jobs via &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; to this partition. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
There is one additional partition available solely to Dr. Heng Huang&#039;s sponsored accounts.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; - This partition is for exclusive priority access to Dr. Huang&#039;s purchased GPU nodes. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
= QoS = &lt;br /&gt;
CBCB users have access to all of the [[Nexus#Quality_of_Service_.28QoS.29 | standard job QoSes]] in the &#039;&#039;&#039;cbcb&#039;&#039;&#039; and &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; partitions using the &amp;lt;code&amp;gt;cbcb&amp;lt;/code&amp;gt; account.&lt;br /&gt;
&lt;br /&gt;
The additional job QoSes for the &#039;&#039;&#039;cbcb&#039;&#039;&#039; and &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; partitions specifically are:&lt;br /&gt;
* &amp;lt;code&amp;gt;highmem&amp;lt;/code&amp;gt;: Allows for significantly increased memory to be allocated.&lt;br /&gt;
* &amp;lt;code&amp;gt;huge-long&amp;lt;/code&amp;gt;: Allows for longer jobs using higher overall resources.&lt;br /&gt;
&lt;br /&gt;
Please note that the partition has a &amp;lt;code&amp;gt;GrpTRES&amp;lt;/code&amp;gt; limit of 100% of the available cores/RAM on the partition-specific nodes in aggregate plus 50% of the available cores/RAM on legacy## nodes in aggregate, so your job may need to wait if all available cores/RAM (or GPUs) are in use.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;only&#039;&#039; allowed job QoS for the &#039;&#039;&#039;cbcb-interactive&#039;&#039;&#039; partition is:&lt;br /&gt;
* &amp;lt;code&amp;gt;interactive&amp;lt;/code&amp;gt;: Allows for 4 CPU / 128G mem jobs up to 12 hours in length - can only be used via &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Jobs =&lt;br /&gt;
You will need to specify &amp;lt;code&amp;gt;--partition=cbcb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=cbcb&amp;lt;/code&amp;gt; to be able to submit jobs to the CBCB partition. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexuscbcb00:~ ] $ srun --pty --ntasks=16 --mem=2000G --qos=highmem --partition=cbcb --account=cbcb --time 1-00:00:00 bash&lt;br /&gt;
srun: job 218874 queued and waiting for resources&lt;br /&gt;
srun: job 218874 has been allocated resources&lt;br /&gt;
[username@cbcb00:~ ] $ scontrol show job 218874&lt;br /&gt;
JobId=218874 JobName=bash&lt;br /&gt;
   UserId=username(1000) GroupId=username(21000) MCS_label=N/A&lt;br /&gt;
   Priority=897 Nice=0 Account=cbcb QOS=highmem&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=1 Restarts=0 BatchFlag=0 Reboot=0 ExitCode=0:0&lt;br /&gt;
   RunTime=00:00:06 TimeLimit=1-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2022-11-18T11:13:56 EligibleTime=2022-11-18T11:13:56&lt;br /&gt;
   AccrueTime=2022-11-18T11:13:56&lt;br /&gt;
   StartTime=2022-11-18T11:13:56 EndTime=2022-11-19T11:13:56 Deadline=N/A&lt;br /&gt;
   PreemptEligibleTime=2022-11-18T11:13:56 PreemptTime=None&lt;br /&gt;
   SuspendTime=None SecsPreSuspend=0 LastSchedEval=2022-11-18T11:13:56 Scheduler=Main&lt;br /&gt;
   Partition=cbcb AllocNode:Sid=nexuscbcb00:25443&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cbcb00&lt;br /&gt;
   BatchHost=cbcb00&lt;br /&gt;
   NumNodes=1 NumCPUs=16 NumTasks=16 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=16,mem=2000G,node=1,billing=2266&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*&lt;br /&gt;
   MinCPUsNode=1 MinMemoryNode=2000G MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)&lt;br /&gt;
   Command=bash&lt;br /&gt;
   WorkDir=/nfshomes/username&lt;br /&gt;
   Power=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
CBCB still has its current [https://wiki.umiacs.umd.edu/cbcb-private/index.php/Storage storage] allocation in place.  All data filesystems that were available in the standalone CBCB cluster are also available in Nexus.  Please note about the change in your home directory in the migration section below.&lt;br /&gt;
&lt;br /&gt;
CBCB users can also request [[Nexus#Project_Allocations | Nexus project allocations]].&lt;br /&gt;
&lt;br /&gt;
= Operating System / Software =&lt;br /&gt;
CBCB&#039;s standalone cluster submission and compute nodes were running RHEL7.  [[Nexus]] is running RHEL9, so any software you compiled on the standalone cluster may need to be re-compiled to work correctly in this new environment.  The [https://wiki.umiacs.umd.edu/cbcb/index.php/CBCB_Software_Modules CBCB module tree] for RHEL9+ may not yet be fully populated with RHEL9+ software.  If you do not see the modules you need, please reach out to the [https://wiki.umiacs.umd.edu/cbcb/index.php/CBCB_Software_Modules#Contact CBCB software maintainers].&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/CBCB&amp;diff=13336</id>
		<title>Nexus/CBCB</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/CBCB&amp;diff=13336"/>
		<updated>2026-08-12T13:36:57Z</updated>

		<summary type="html">&lt;p&gt;Mbaney: /* Compute Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The compute nodes from [[CBCB]]&#039;s previous standalone cluster have folded into [[Nexus]] as of mid 2023.&lt;br /&gt;
&lt;br /&gt;
The Nexus cluster already has a large pool of compute resources made possible through college-level funding for UMIACS and CSD faculty. Details on common nodes already in the cluster (Tron partition) can be found [[Nexus/Tron | here]].&lt;br /&gt;
&lt;br /&gt;
Please [[HelpDesk | contact staff]] with any questions or concerns.&lt;br /&gt;
&lt;br /&gt;
= Submission Nodes =&lt;br /&gt;
You can [[SSH]] to &amp;lt;code&amp;gt;nexuscbcb.umiacs.umd.edu&amp;lt;/code&amp;gt; to log in to a submission node.&lt;br /&gt;
&lt;br /&gt;
If you store something in a local filesystem directory (/tmp, /scratch0) on one of the two submission nodes, you will need to connect to that same submission node to access it later. The actual submission nodes are:&lt;br /&gt;
* &amp;lt;code&amp;gt;nexuscbcb00.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nexuscbcb01.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Compute Nodes = &lt;br /&gt;
All compute nodes in CBCB-owned partitions (see below section) owned by CBCB faculty are named in the format &amp;lt;code&amp;gt;cbcb##&amp;lt;/code&amp;gt;. The sets of nodes are:&lt;br /&gt;
* 22 nodes that were purchased in October 2022 with center-wide funding: cbcb[00-21]&lt;br /&gt;
* 1 node from the previous standalone CBCB cluster that moved in as of Summer 2023: cbcb25&lt;br /&gt;
* 4 additional nodes purchased by Dr. Heng Huang: cbcb[26-29]&lt;br /&gt;
* 1 additional node purchased by Dr. Mihai Pop: cbcb30&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Nodenames&lt;br /&gt;
! Quantity&lt;br /&gt;
! CPU cores per node (CPUs)&lt;br /&gt;
! Memory per node (type)&lt;br /&gt;
! Filesystem storage per node (type/location)&lt;br /&gt;
! GPUs per node (type)&lt;br /&gt;
|-&lt;br /&gt;
|cbcb[00-21]&lt;br /&gt;
|22&lt;br /&gt;
|32 (Dual [https://www.amd.com/en/products/processors/server/epyc/7003-series/amd-epyc-7313.html AMD EPYC 7313])&lt;br /&gt;
|~2TB (DDR4 3200MHz)&lt;br /&gt;
|~350GB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~2TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|cbcb25&lt;br /&gt;
|1&lt;br /&gt;
|24 (Dual [https://www.intel.com/content/www/us/en/products/sku/91767/intel-xeon-processor-e52650-v4-30m-cache-2-20-ghz/specifications.html Intel Xeon E5-2650 v4])&lt;br /&gt;
|~256GB (DDR4 2400MHz)&lt;br /&gt;
|~1.4TB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]])&lt;br /&gt;
|2 (1x [https://www.nvidia.com/en-gb/geforce/graphics-cards/geforce-gtx-1080-ti/specifications/ NVIDIA GeForce GTX 1080 Ti], 1x [https://www.nvidia.com/en-us/geforce/graphics-cards/compare/?section=compare-20 NVIDIA GeForce RTX 2080 Ti])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb26&lt;br /&gt;
|1&lt;br /&gt;
|128 (Dual [https://www.amd.com/en/products/processors/server/epyc/7003-series/amd-epyc-7763.html AMD EPYC 7763])&lt;br /&gt;
|~512GB (DDR4 3200MHz)&lt;br /&gt;
|~3.4TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~14TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|7 ([https://www.nvidia.com/en-us/design-visualization/rtx-a5000 NVIDIA RTX A5000])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb27&lt;br /&gt;
|1&lt;br /&gt;
|64 (Dual [https://www.amd.com/en/products/processors/server/epyc/7003-series/amd-epyc-7513.html AMD EPYC 7513])&lt;br /&gt;
|~256GB (DDR4 3200MHz)&lt;br /&gt;
|~3.4TB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~3.5TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|8 ([https://www.nvidia.com/en-us/design-visualization/rtx-a6000 NVIDIA RTX A6000])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb[28-29]&lt;br /&gt;
|2&lt;br /&gt;
|32 (Dual [https://www.amd.com/en/products/processors/server/epyc/4th-generation-9004-and-8004-series/amd-epyc-9124.html AMD EPYC 9124])&lt;br /&gt;
|~768GB (DDR5 4800MHz)&lt;br /&gt;
|~350GB (SATA SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~7TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|8 ([https://www.nvidia.com/en-us/design-visualization/rtx-6000 NVIDIA RTX 6000 Ada Generation])&lt;br /&gt;
|-&lt;br /&gt;
|cbcb30&lt;br /&gt;
|1&lt;br /&gt;
|48 (Single [https://www.amd.com/en/products/processors/server/epyc/9005-series/amd-epyc-9475f.html AMD EPYC 9475F])&lt;br /&gt;
|~1.15TB (DDR5 6400MHz)&lt;br /&gt;
|~350GB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch0]]), ~10.5TB (NVMe SSD [[FilesystemDataStorage#UNIX_Filesystem_Storage | /scratch1]])&lt;br /&gt;
|0&lt;br /&gt;
|- class=&amp;quot;sortbottom&amp;quot;&lt;br /&gt;
!Total&lt;br /&gt;
|28&lt;br /&gt;
|1032 (various)&lt;br /&gt;
|~49TB (various)&lt;br /&gt;
|~103TB (various)&lt;br /&gt;
|33 (various)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here is the listing of nodes as shown by the Slurm alias &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; (again, all nodes are named in the format &amp;lt;code&amp;gt;cbcb##&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[root@nexusctl00 ~]# show_nodes | grep cbcb&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                           GRES                             STATE&lt;br /&gt;
cbcb00               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb01               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb02               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb03               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb04               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb05               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb06               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb07               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb08               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb09               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb10               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb11               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb12               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb13               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb14               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb15               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb16               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb17               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb18               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb19               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb20               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb21               32         2061175    rhel9,x86_64,Zen,EPYC-7313               (null)                           idle&lt;br /&gt;
cbcb25               24         255278     rhel9,x86_64,Xeon,E5-2650,Pascal,Turing  gpu:rtx2080ti:1,gpu:gtx1080ti:1  idle&lt;br /&gt;
cbcb26               128        513243     rhel9,x86_64,Zen,EPYC-7763,Ampere        gpu:rtxa5000:7                   idle&lt;br /&gt;
cbcb27               64         255167     rhel9,x86_64,Zen,EPYC-7513,Ampere        gpu:rtxa6000:7                   idle&lt;br /&gt;
cbcb28               32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8                 idle&lt;br /&gt;
cbcb29               32         771166     rhel9,x86_64,Zen,EPYC-9124,Ada           gpu:rtx6000ada:8                 idle&lt;br /&gt;
cbcb30               48         1157583    rhel9,x86_64,EPYC,EPYC-9475F             (null)                           idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
The network infrastructure supporting the CBCB partition consists of:&lt;br /&gt;
# One pair of network switches connected to each other via dual 100GbE links for redundancy, serving the following compute nodes:&lt;br /&gt;
#* cbcb[00-21,26-30]: Two 100GbE links per node, one to each switch in the pair (redundancy).&lt;br /&gt;
# One pair of network switches connected to the above pair of network switches via four 40GbE links, one between every combination of switches across the two pairings for redundancy, and to each other via dual 10GbE links for redundancy.&lt;br /&gt;
#* cbcb25: Two 10GbE links, one to each switch in the pair (redundancy).&lt;br /&gt;
&lt;br /&gt;
For a broader overview of the network infrastructure supporting the Nexus cluster, please see [[Nexus/Network]].&lt;br /&gt;
&lt;br /&gt;
= Partitions =&lt;br /&gt;
There are two partitions available to general CBCB [[SLURM]] users. You must specify one of these two partitions when submitting your job.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cbcb&#039;&#039;&#039; - This is the default partition. Job allocations on all nodes except those also in the &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; partition are guaranteed.&lt;br /&gt;
* &#039;&#039;&#039;cbcb-interactive&#039;&#039;&#039; - This is a partition that only allows interactive jobs; you cannot submit jobs via &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; to this partition. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
There is one additional partition available solely to Dr. Heng Huang&#039;s sponsored accounts.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; - This partition is for exclusive priority access to Dr. Huang&#039;s purchased GPU nodes. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
= QoS = &lt;br /&gt;
CBCB users have access to all of the [[Nexus#Quality_of_Service_.28QoS.29 | standard job QoSes]] in the &#039;&#039;&#039;cbcb&#039;&#039;&#039; and &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; partitions using the &amp;lt;code&amp;gt;cbcb&amp;lt;/code&amp;gt; account.&lt;br /&gt;
&lt;br /&gt;
The additional job QoSes for the &#039;&#039;&#039;cbcb&#039;&#039;&#039; and &#039;&#039;&#039;cbcb-heng&#039;&#039;&#039; partitions specifically are:&lt;br /&gt;
* &amp;lt;code&amp;gt;highmem&amp;lt;/code&amp;gt;: Allows for significantly increased memory to be allocated.&lt;br /&gt;
* &amp;lt;code&amp;gt;huge-long&amp;lt;/code&amp;gt;: Allows for longer jobs using higher overall resources.&lt;br /&gt;
&lt;br /&gt;
Please note that the partition has a &amp;lt;code&amp;gt;GrpTRES&amp;lt;/code&amp;gt; limit of 100% of the available cores/RAM on the partition-specific nodes in aggregate plus 50% of the available cores/RAM on legacy## nodes in aggregate, so your job may need to wait if all available cores/RAM (or GPUs) are in use.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;only&#039;&#039; allowed job QoS for the &#039;&#039;&#039;cbcb-interactive&#039;&#039;&#039; partition is:&lt;br /&gt;
* &amp;lt;code&amp;gt;interactive&amp;lt;/code&amp;gt;: Allows for 4 CPU / 128G mem jobs up to 12 hours in length - can only be used via &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Jobs =&lt;br /&gt;
You will need to specify &amp;lt;code&amp;gt;--partition=cbcb&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=cbcb&amp;lt;/code&amp;gt; to be able to submit jobs to the CBCB partition. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexuscbcb00:~ ] $ srun --pty --ntasks=16 --mem=2000G --qos=highmem --partition=cbcb --account=cbcb --time 1-00:00:00 bash&lt;br /&gt;
srun: job 218874 queued and waiting for resources&lt;br /&gt;
srun: job 218874 has been allocated resources&lt;br /&gt;
[username@cbcb00:~ ] $ scontrol show job 218874&lt;br /&gt;
JobId=218874 JobName=bash&lt;br /&gt;
   UserId=username(1000) GroupId=username(21000) MCS_label=N/A&lt;br /&gt;
   Priority=897 Nice=0 Account=cbcb QOS=highmem&lt;br /&gt;
   JobState=RUNNING Reason=None Dependency=(null)&lt;br /&gt;
   Requeue=1 Restarts=0 BatchFlag=0 Reboot=0 ExitCode=0:0&lt;br /&gt;
   RunTime=00:00:06 TimeLimit=1-00:00:00 TimeMin=N/A&lt;br /&gt;
   SubmitTime=2022-11-18T11:13:56 EligibleTime=2022-11-18T11:13:56&lt;br /&gt;
   AccrueTime=2022-11-18T11:13:56&lt;br /&gt;
   StartTime=2022-11-18T11:13:56 EndTime=2022-11-19T11:13:56 Deadline=N/A&lt;br /&gt;
   PreemptEligibleTime=2022-11-18T11:13:56 PreemptTime=None&lt;br /&gt;
   SuspendTime=None SecsPreSuspend=0 LastSchedEval=2022-11-18T11:13:56 Scheduler=Main&lt;br /&gt;
   Partition=cbcb AllocNode:Sid=nexuscbcb00:25443&lt;br /&gt;
   ReqNodeList=(null) ExcNodeList=(null)&lt;br /&gt;
   NodeList=cbcb00&lt;br /&gt;
   BatchHost=cbcb00&lt;br /&gt;
   NumNodes=1 NumCPUs=16 NumTasks=16 CPUs/Task=1 ReqB:S:C:T=0:0:*:*&lt;br /&gt;
   TRES=cpu=16,mem=2000G,node=1,billing=2266&lt;br /&gt;
   Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=*&lt;br /&gt;
   MinCPUsNode=1 MinMemoryNode=2000G MinTmpDiskNode=0&lt;br /&gt;
   Features=(null) DelayBoot=00:00:00&lt;br /&gt;
   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)&lt;br /&gt;
   Command=bash&lt;br /&gt;
   WorkDir=/nfshomes/username&lt;br /&gt;
   Power=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
CBCB still has its current [https://wiki.umiacs.umd.edu/cbcb-private/index.php/Storage storage] allocation in place.  All data filesystems that were available in the standalone CBCB cluster are also available in Nexus.  Please note about the change in your home directory in the migration section below.&lt;br /&gt;
&lt;br /&gt;
CBCB users can also request [[Nexus#Project_Allocations | Nexus project allocations]].&lt;br /&gt;
&lt;br /&gt;
= Operating System / Software =&lt;br /&gt;
CBCB&#039;s standalone cluster submission and compute nodes were running RHEL7.  [[Nexus]] is running a mixture of RHEL8 and RHEL9, so any software you compiled on the standalone cluster may need to be re-compiled to work correctly in this new environment.  The [https://wiki.umiacs.umd.edu/cbcb/index.php/CBCB_Software_Modules CBCB module tree] for RHEL8+ may not yet be fully populated with RHEL8+ software.  If you do not see the modules you need, please reach out to the [https://wiki.umiacs.umd.edu/cbcb/index.php/CBCB_Software_Modules#Contact CBCB software maintainers].&lt;/div&gt;</summary>
		<author><name>Mbaney</name></author>
	</entry>
</feed>