High Unrestored log on secondary database mirror server I need your help in understanding/resolving one of the issues we are witnessing today.

We have a high value of unrestored log on secondary side where value keep ranging from 5-10 GB as monitored.

Simultaneously we have a job to create snapshot on this mirror [for reporting] server every 30 minutes which completes within a minute when unrestored is within MB's but keep running for 2-3 hours with high value of unrestored log

The database here is 10 TB and OLTP with DB in high PERformance mode.

Could someone explain why the snapshot job is running that long or how to find it and fix high unrestored value?

Or could it be Vice-versa and i am thinking wrong as mirror causing snapshot to run that long?
We have a high value of unrestored log on secondary side where value keep ranging from 5-10 GB as monitored.

That's definitely a problem even in high performance (async) mode.

Simultaneously we have a job to create snapshot on this mirror [for reporting] server every 30 minutes which completes within a minute when unrestored is within MB's but keep running for 2-3 hours with high value of unrestored log
Could someone explain why the snapshot job is running that long or how to find it and fix high unrestored value?

Creating a snapshot of a database causes the snapshot to run recovery - just as if you were to start up any database in SQL Server. Since there is 10 GB of log to go through... it's going to take a while to run recovery. Pair that with adding of more log to an already behind database and you have yourself a great recipe for never catching up and always being behind.
From BOL: Uncommitted transactions are rolled back in a newly created database snapshot because the Database Engine runs recovery after the snapshot has been created (transactions in the database are not affected).