Thank you for the suggestion.
I made a very simple scene and lowered Cycles viewport samples to 8, it’s still not as fast as Eevee. And for a dark scene, low sample count creates a horrible preview which I can barely see the details.
I can’t access Youtube for now so I assume it’s Auto Tile Size addon. Don’t see a huge improvement yet, may be it’s because my scene has few objects.
I think like Jonathan said below, when using Cycles, I’d better use material preview mode to adjust color & normal map, and use render preview only to adjust light. Currently Cycles viewport denoising in Blender 2.90.1 may have a bug that cause Blender to crash, I will definitely check if it works when it’s available.
Also I thought having a 1080 will make Cycles blazing fast, sigh….