You can use /proc/vz/vestat file:
[root@tst ~]# cat /proc/vz/vestat
Version: 2.2
VEID user nice system uptime idle strv uptime used maxlat totlat numsched
100 0 0 5063 40598698 70123626936598 0 35069066535737 8612439976 2314 737714316 53144
in this file for each VPS you have:
1. "user nice system uptime" in jiffies. i.e. divide by jiffies_per_second to get seconds (see below).
2. "idle strv uptime used" in cycles. much more accurate. seconds = used / cycles_per_jiffy / jiffies_per_seconds.
3. values of cycles_per_jiffy and jiffies_per_seconds can be read from /proc/vz/stats
BTW, while looking into this I found a small misprint in /proc/vz/vestat output code, so thank you very much
--- ./kernel/vecalls.c.usertm 2006-04-07 19:04:46.000000000 +0400
+++ ./kernel/vecalls.c 2006-04-20 10:05:24.000000000 +0400
@@ -2875,7 +2875,7 @@ static int vestat_seq_show(struct seq_fi
idle_time = strv_time = used = 0;
for (cpu = 0; cpu < NR_CPUS; cpu++) {
- user_ve += VE_CPU_STATS(ve, cpu)->nice;
+ user_ve += VE_CPU_STATS(ve, cpu)->user;
nice_ve += VE_CPU_STATS(ve, cpu)->nice;
system_ve += VE_CPU_STATS(ve, cpu)->system;
used += VE_CPU_STATS(ve, cpu)->used_time;