Introduction to Kellogg Linux Cluster#
The Kellogg Linux Cluster (KLC) is a set of high-memory Linux servers available to Kellogg researchers for interactive computing, data analysis, and running computationally intensive jobs. If your analysis is too slow on a laptop, requires more memory than you have locally, or needs to run overnight, KLC is the right tool.
What KLC Offers#
Large memory — each node has 1.5–2 TB of RAM, far more than any laptop
Many CPU cores — up to 64 cores per node for parallel workloads
Large storage — 2 TB of project storage per researcher, separate from your home directory
Shared datasets — curated research datasets pre-loaded and ready to use
Scientific software — the same software library as Northwestern Quest, available via
module loadReproducible workflows — run the same code on the same hardware every time
KLC Architecture#
KLC consists of 12 high-memory Linux nodes:
Nodes |
CPU Cores |
RAM |
|---|---|---|
klc0304 – klc0307, klc0401, klc0402, klc0503 (latest gen) |
64 cores |
2 TB |
klc0202, klc0203, klc0301 – klc0303 |
52 cores |
1.5 TB |
All nodes share the same file systems, so a file saved on one node is accessible from any other.
Usage policy: Each user may use up to 24 CPU cores concurrently at normal priority. Going beyond this reduces priority for all your processes. Contact rs@kellogg.northwestern.edu if your work regularly needs more than 24 cores.
KLC Reserve#
KLC Reserve gives you access to dedicated GPU and high-core-count CPU nodes through the SLURM job scheduler — resources not available on the standard KLC login nodes.
Resource Type |
Best For |
|---|---|
GPU — H100 |
Large-scale LLM training and inference, deep learning |
GPU — A100 |
GPU-accelerated computation, ML training |
GPU — L40S |
LLM inference, rendering, general GPU workloads |
Very large in-memory datasets, parallel batch jobs |
Jobs are submitted to the kellogg SLURM partition and run exclusively on allocated resources for the duration of your job. No additional account setup is needed if you already have KLC access. Full details: KLC Reserve
Getting Started: Step by Step#
Step 1 — Get an Account#
If you do not already have a KLC account, contact Kellogg Research Support at rs@kellogg.northwestern.edu .
Step 2 — Connect to KLC#
KLC OnDemand (zero setup — start here if you’re not sure)
Go to Quest OnDemand , log in with your NetID, and select the Kellogg Linux Cluster profile. From there you can launch Jupyter, RStudio, VS Code, or a full graphical desktop directly in your browser — nothing to install or configure. Full walkthrough: KLC OnDemand
SSH (command line)
On Mac, open the built-in Terminal app and run:
ssh your-netid@klc0305.quest.northwestern.edu
On Windows, open PowerShell and run:
ssh your-netid@klc0305.quest.northwestern.edu
Set up passwordless SSH login to avoid entering your password each time. Full instructions: SSH
VS Code with Remote SSH (recommended for development)
Connect VS Code directly to KLC and edit files, run notebooks, and use GitHub Copilot — all from your laptop. See VS Code Workflow for KLC.
FastX (full graphical desktop)
For software that requires a full X11 desktop — MATLAB, Stata, SAS. See FastX.
Step 3 — Understand Your Storage#
Once connected, you have two storage locations:
Location |
Path |
Quota |
Purpose |
|---|---|---|---|
Home directory |
|
80 GB |
Personal files, config, small scripts |
Project directory |
|
2 TB |
Data, conda environments, job output |
Always store data and environments in your project directory — the home directory fills up quickly.
Full details: KLC Filesystem
Step 4 — Set Up a Python or R Environment#
KLC uses mamba (a faster version of conda) to manage software environments. Create an isolated environment in your project directory:
module load mamba/24.3.0
mamba create -p /kellogg/proj/your-netid/envs/my-project python=3.11
source activate /kellogg/proj/your-netid/envs/my-project
mamba install pandas numpy matplotlib
Full details: Conda Environments on KLC
Step 5 — Run Your First Script#
With your environment active, run a Python script:
python my_analysis.py
For long-running jobs, wrap your session in tmux and save a log file so the job keeps running if you disconnect:
tmux new -s my-job
mkdir -p logs
python my_analysis.py 2>&1 | tee -a logs/my_analysis.log
# Press Ctrl+B then D to detach — job keeps running
# Reconnect later with: tmux attach -t my-job
Full details: Launching Jobs · Using tmux
Key Things to Know#
Stay within the 24-core limit per user across all KLC nodes. For jobs that should survive a disconnect, use
tmuxand save output to a log file — see Launching Jobs.Use your project directory for data and environments, not your home directory.
Load software with
module loadbefore using R or Stata:module load R/4.5.1,module load stata/17. For Python, loadmamba/24.3.0and activate a conda environment — see Step 4 above.Check memory usage before starting large jobs:
module load glances && glancesshows all users’ CPU and memory in real time.
Where to Go Next#
Goal |
Page |
|---|---|
Connect and log in |
|
Set up a development environment |
|
Transfer files to/from KLC |
|
Keep jobs running after disconnect |
|
Full reference documentation |
|
Use VS Code with KLC |
|
Use LLMs on KLC |
|
Interactive vs. scheduled jobs |
|
Submit SLURM and GPU jobs |
|
CPU vs. GPU concepts |
|
SLURM job scheduler (deep reference) |
|
Software modules reference |
|
Filesystem quotas and permissions |
|
Login methods (SSH, FastX, OnDemand) |