Is it possible to schedule the time when bandwith . . .
How may I schedule this in tor relay? Is it possible to limit traffic on the client or I need to do it on my firewall ?
As suggested in an earlier reply, configuring 'cron' jobs to adjust the rate usually makes sense.
As an alternative to modifying 'torrc' and sending SIGHUP to the daemon, you could use a control-channel script similar to:
nc 127.0.0.1 9151 <<EOF AUTHENTICATE "passphrase" SETCONF BandwidthRate=Y BandwidthBurst=Y QUIT EOF
An even better way is to use the 'tc' or "traffic control" command to limit ingress traffic to the relay via a 'police' filter, as rate-limiting through discarding of packets result in better performance from daemon during overload conditions than the daemon rate-limit algorithm.
But 'tc' only works if an interface or alternate IP on an interface can be dedicated to the Tor router, and it's more technical to configure.
If the firewall is an Cisco ASA, an ingress rate 'police' policy can be constructed with results similar to the 'tc' approach. However one must dedicate an entire ASA Ethernet port to the relay as this type of filter cannot be applied to a limited set of flows.
A problem with altering bandwidth significantly on a schedule is that the BWauths that measure and rate relays will produce erratic results for the relay. BWauths are erratic when rating stable relays due to some issues with the implementation, and the results for a moving target is even worse.