TempDB Contention

WITH Tasks AS
(
SELECT
    session_id
  , wait_type
  , wait_duration_ms
  , blocking_session_id
  , resource_description
  , PageID = CAST(RIGHT(Resource_description, LEN(Resource_description) - CHARINDEX(':', Resource_description, 3)) AS INT)
FROM
  sys.dm_os_waiting_tasks
WHERE
      wait_type LIKE 'PAGE%LATCH_%'
  AND resource_description LIKE '2:%'
)
SELECT
    session_id
  , wait_type
  , wait_duration_ms
  , blocking_session_id
  , resource_description
  , resourcetype = 
     CASE
       WHEN PageID = 1 OR PageID % 8080 = 0       THEN 'is PFS Page'
       WHEN PageID = 2 OR PageID % 511232 = 0     THEN 'is GAM Page'
       WHEN PageID = 3 OR (PageID-1) % 511232 = 0 THEN 'is SGAM Page'
       ELSE 'is not PFS, GAM or SGAM page'
     END
FROM Tasks;

Reference:
[1] – Breaking Down TempDB Contention from Robert Davis @ SQL Server Central