SQL Server 2016 with high tempdb usage and low RAM usage
My understanding is that tempdb is only used when the server is under memory pressure


That's not exactly true.  There are lots of things that can cause tempdb usage:


the most obvious would be explicitly writing data to local or global temporary tables (#tempTableName or ##tempTableName).  I imagine this is not your problem though
version store activity (for instance because of queries using snapshot isolation or RCSI)
there are a few execution plan operators that can "spill" to tempdb


It's likely that your problem is spills.  For some good general information, and links to specific troubleshooting steps, check out this answer from Paul White to the question What frequency of hash/sort spills into tempdb is concerning?

You could also run sp_BlitzCache @SortOrder = 'spills' (from the First Responder Kit) to find some of the most problematic queries if they are still in your plan cache.

As far as dealing with the spills, you could post separate questions about the bad queries and probably get help on resolving whatever is causing the spills (bad cardinality estimates, small memory grants, etc).

Memory pressure can lead to low memory grants, which can lead to tempdb spills - which is why I said your initial assertion about memory pressure is not exactly true - because it is true sometimes!



The execution plan you provided is an estimated execution plan, so it doesn't indicate if any operators spilled to tempdb.  But it does have multiple memory-consuming operators (sorts in particular), so it has the potential to generate tempdb activity.