The Roofline performance model offers an insightful and intuitive method for extracting the key execution characteristics of HPC applications and comparing them against the performance bounds of modern CPUs and GPUs. Its ability to abstract the complexity of memory hierarchies and identify the most profitable optimization techniques have made Roofline-based analysis increasingly popular in the HPC community. The tutorial will introduce the fundamental aspects behind different Roofline modeling principles as well as providing several practical use case scenarios that highlight their efficacy for application optimization on CPUs and GPUs. This tutorial presents a unique combination of instruction to Roofline, hands-on instruction in using Roofline within Intel and NVIDIA production performance tools by Intel and NVIDIA staff, and discussions of real-world Roofline use cases at ALCF, NERSC and INESC computing centers. The tutorial presenters have a long history of collaborating on the Roofline model and have presented several Roofline-based tutorials.