Обычным setInterval такую задачу не решить. Интервал и таймаут дает гарантию, что колбек не запуститься раньше, чем через X миллисекунд, но он не гарантирует, что четко через это время произойдет запуск.
Для оптимизации браузер вообще может вкладку остановить и не выполнять код в ней, если она не в фокусе.
Видео про таймер - тут об этом, правда на английском.