After getting my invitation to Cloud Foundry, I was curious about what kind of infrastructure was used by VMWare to run this service.
Luckily, it is fairly trivial to run UNIX commands interactively using the Grails console plugin and groovy’s execute method.
We build a simple app
grails create-app mucky cd mucky grails install-plugin console grails install-plugin cloud-foundry grails cf-push
( assumes your credentials are already in /.grails/Settings.groovy )
Then you can go to your app — http://mucky.cloudfoundry.com/console in my case — and type in Unix commands to determine your hardware and software versions.
Typing in this console request
[ 'uname -a', 'uname -r', 'cat /etc/issue', 'cat /proc/cpuinfo', 'cat /proc/loadavg', 'cat /proc/meminfo', 'free -m -t', 'df -H' ].each{ command -> println '' println "------- COMMAND : [ ${command} ] --------" println '' command.execute().text.eachLine{ line -> println "$line" } println '' }
I got the following results:
------- COMMAND : [ uname -a ] -------- Linux bb5114ec-1064-45c5-93b4-ddb85a281773 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux ------- COMMAND : [ uname -r ] -------- 2.6.32-31-server ------- COMMAND : [ cat /etc/issue ] -------- Ubuntu 10.04.2 LTS \n \l ------- COMMAND : [ cat /proc/cpuinfo ] -------- processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz stepping : 1 cpu MHz : 2660.000 cache size : 12288 KB fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat bogomips : 5320.00 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz stepping : 1 cpu MHz : 2660.000 cache size : 12288 KB fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat bogomips : 5320.00 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: processor : 2 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz stepping : 1 cpu MHz : 2660.000 cache size : 12288 KB fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat bogomips : 5320.00 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: processor : 3 vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz stepping : 1 cpu MHz : 2660.000 cache size : 12288 KB fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat bogomips : 5320.00 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: ------- COMMAND : [ cat /proc/loadavg ] -------- 0.24 0.17 0.11 1/223 23328 ------- COMMAND : [ cat /proc/meminfo ] -------- MemTotal: 16470448 kB MemFree: 12535452 kB Buffers: 210540 kB Cached: 1886704 kB SwapCached: 0 kB Active: 1798656 kB Inactive: 1637204 kB Active(anon): 1338640 kB Inactive(anon): 184 kB Active(file): 460016 kB Inactive(file): 1637020 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 16474648 kB SwapFree: 16474648 kB Dirty: 440 kB Writeback: 0 kB AnonPages: 1338632 kB Mapped: 28840 kB Shmem: 216 kB Slab: 160228 kB SReclaimable: 149644 kB SUnreclaim: 10584 kB KernelStack: 1808 kB PageTables: 7104 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 24709872 kB Committed_AS: 2274384 kB VmallocTotal: 34359738367 kB VmallocUsed: 310844 kB VmallocChunk: 34359424764 kB HardwareCorrupted: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 8192 kB DirectMap2M: 16769024 kB ------- COMMAND : [ free -m -t ] -------- total used free shared buffers cached Mem: 16084 3842 12241 0 205 1842 -/+ buffers/cache: 1794 14289 Swap: 16088 0 16088 Total: 32172 3842 28330 ------- COMMAND : [ df -H ] -------- Filesystem Size Used Avail Use% Mounted on /dev/sda1 1.1G 814M 142M 86% / none 8.5G 168k 8.5G 1% /dev none 8.5G 0 8.5G 0% /dev/shm none 8.5G 54k 8.5G 1% /var/run none 8.5G 0 8.5G 0% /var/lock none 8.5G 0 8.5G 0% /lib/init/rw none 1.1G 814M 142M 86% /var/lib/ureadahead/debugfs /dev/sdb2 18G 2.1G 15G 13% /var/vcap/data /dev/loop0 130M 5.8M 123M 5% /tmp
It seems that Cloud Foundry runs on very typical Quad Core Intel boxes with Ubuntu 10 and 16 gigs (?) of ram. You can also use this technique to explore the file system and see how different things are set up and configured.
nice!
What you see here is the hardware simulated by the hypervisor. It is virtual hardware, not the real one. It is very interesting though.