2

I'm trying to get a CentOS 5.4 server to hibernate when the system has been inactive for a while. By inactive I mean there are no incoming network connections.

I can get the system to hibernate and also make it wake-up over the network. What I need to know is how to configure the system to monitor the network traffic and go into hibernation after a while, say 2 hours.

Marnix van Valen
  • 193
  • 1
  • 4
  • 13
  • Why exactly would you want to put a server in hybernation?!? – Massimo Feb 21 '10 at 13:15
  • Because it's not used all the time and I don't like wasting energy. There's no use in keeping an (internal) server running when everybody with access to the server is a sleep. – Marnix van Valen Feb 21 '10 at 14:09
  • Did you ever able to achieve this? I'm trying to do the same thing as you but didn't able to get to that point yet. Could you provide some more info if you have already done this. Cheers!! – La Scavenger Jun 12 '11 at 09:43
  • @Scavenger No, I never got this to work. Please let me know if you get any further. – Marnix van Valen Jun 12 '11 at 18:53

2 Answers2

1

If it is a server, then which services needs to be up? If you serve HTTP only and need SSH also, just monitor HTTP, HTTPS and SSH traffic and if it is idle for more than X minutes hibernate it. You can use tshark to check this.

Mircea Vutcovici
  • 16,706
  • 4
  • 52
  • 80
  • I've been looking into tshark. I'm not sure how I can use it to get the info needed to decide when to hibernate. Could you give me an example? – Marnix van Valen Feb 21 '10 at 20:27
  • Something like: i=5;while [ $i -gt 0 ];do sudo tshark -npa duration:5 -i lo dst host 192.168.1.100 and dst port 80 2>&1|grep "^0 "||exit;echo -n $i " ";i=$(( $i - 1 ));done;hibernate.sh But I think that the best way is to use iptables with LOG target. – Mircea Vutcovici Feb 22 '10 at 01:27
  • iptables with a LOG target sounds good since iptables is already running on the machine. Care to help me on my way some more sample scripts? Shell scripting is not exactly my area of expertise.... – Marnix van Valen Feb 23 '10 at 21:25
0

How good are your scripting skills? (or server monitoring system)

You may be able to get away with sampling the TX/RX bytes on your ethernet interface(capture the output of ifconfig, or parse /proc/net/dev), and if it's lower than a certain threshold after 1 hr, initiate the hibernation sequence?

I'm not aware of an out-of-the-box solution for something like this, but I can see how something like this would be useful. Google has many data centers, and move load + power consumption to areas that are active @ that time of day.

Jason
  • 1,875
  • 1
  • 13
  • 12
  • Don't think TX/RX bytes will do it. There's always some traffic like ARP and SMB. I definitely will need some filtering. – Marnix van Valen Feb 23 '10 at 21:23
  • Right --- there's always background traffic, I guess depending on how much traffic 'normal' load creates compared to 'idle' load --- if the difference isn't large enough just counting rx/tx won't work. – Jason Feb 24 '10 at 00:25