Trace number 2696292

Some explanations

A solver is run under the control of another program named runsolver. runsolver is in charge of imposing the CPU time limit and the memory limit to the solver. It also monitors some information about the process. The trace of the execution of a solver is divided into four (or five) parts:
  1. SOLVER DATA
    This is the output of the solver (stdout and stderr).
    Note that some very long lines in this section may be truncated by your web browser ! In such a case, you may want to use the "Download as text" link to get the trace as a text file.

    When the --timestamp option is passed to the runsolver program, each line output by the solver is prepended with a timestamp which indicates at what time the line was output by the solver. Times are relative to the start of the program, given in seconds. The first timestamp (if present) is estimated CPU time. The last timestamp is wall clock time.

    As some 'v lines' may be very long (sometimes several megabytes), the 'v line' output by your solver may be split on several lines to help limit the size of the trace recorded in the database. In any case, the exact output of your solver is preserved in a trace file.
  2. VERIFIER DATA
    The output of the solver is piped to a verifier program which will search a value line "v " and, if found, will check that the given interpretation satisfies all constraints.
  3. CONVERSION SCRIPT DATA (Optionnal)
    When a conversion script is used, this section shows the messages that were output by the conversion script.
  4. WATCHER DATA
    This is the informations gathered by the runsolver program. It first prints the different limits. There's a first limit on CPU time set to X seconds (see the parameters in the trace). After this time has ellapsed, runsolver sends a SIGTERM and 2 seconds later a SIGKILL to the solver. For safety, there's also another limit set to X+30 seconds which will send a SIGXPU to the solver. The last limit is on the virtual memory used by the process (see the parameters in the trace).
    Every ten seconds, the runsolver process fetches the content of /proc/loadavg, /proc/pid/stat and /proc/pid/statm (see man proc) and prints it as raw data. This is only recorded in case we need to investigate the behaviour of a solver. The memory used by the solver (vsize) is also given every ten seconds.
    When the solver exits, runsolver prints some informations such as status and time. CPU usage is the ratio CPU Time/Real Time.
  5. LAUNCHER DATA
    These informations are related to the script which will launch the solver. The most important informations are the command line given to the solver, the md5sum of the different files and the dump of the /proc/cpuinfo and /proc/meminfo which provides some useful information on the computer.

Solver answer on this benchmark

Solver NameAnswerCPU timeWall clock time
pb_cplex 2010-06-29? (MO) 60.45 60.5229

General information on the benchmark

Namenormalized-PB06/SATUNSAT-SMALLINT/submitted-PB06/liu/
dbst/normalized-dbst_v40_e600_d20_mw10_6.opb.PB06.opb
MD5SUMf5d8cf0048d52cf223a3574d281ac8f8
Bench CategoryDEC-SMALLINT (no optimisation, small integers)
Best result obtained on this benchmarkSAT
Best value of the objective obtained on this benchmark0
Best CPU time to get the best result obtained on this benchmark2.89356
Has Objective FunctionNO
SatisfiableYES
(Un)Satisfiability was provedYES
Best value of the objective function
Optimality of the best value was proved NO
Number of variables2800
Total number of constraints990001
Number of constraints which are clauses986760
Number of constraints which are cardinality constraints (but not clauses)81
Number of constraints which are nor clauses,nor cardinality constraints3160
Minimum length of a constraint2
Maximum length of a constraint1200
Number of terms in the objective function 0
Biggest coefficient in the objective function 0
Number of bits for the biggest coefficient in the objective function 0
Sum of the numbers in the objective function 0
Number of bits of the sum of numbers in the objective function 0
Biggest number in a constraint 350
Number of bits of the biggest number in a constraint 9
Biggest sum of numbers in a constraint 1239
Number of bits of the biggest sum of numbers11
Number of products (including duplicates)0
Sum of products size (including duplicates)0
Number of different products0
Sum of products size0

Solver Data

0.00/0.00	c pb_cplex 1.0 - 20100701
0.00/0.00	c Parsing opb file format. File HOME/instance-2696292-1278016098.opb.
0.00/0.00	c Instance file HOME/instance-2696292-1278016098.opb
0.00/0.00	c File size is 34937077 bytes.
11.28/11.35	c Highest Coefficient sum: 1239
11.28/11.35	c  IBM ILOG License Manager: "IBM ILOG Optimization Suite for Academic Initiative" is accessing CPLEX 12 with option(s): "e m b q ".
12.48/12.58	c ============================[ Problem Statistics ]=============================
12.48/12.58	c |                                                                             |
12.48/12.58	c |  Parsing time:          12.17        s                                      |
12.48/12.58	c |  Number Variables:      2800                                                |
12.87/12.91	c |  Number Constraints:    990001                                              |
12.87/12.91	c ===============================================================================
60.45/60.51	c Remaining time 1787.60 sec.
60.45/60.51	c 
60.45/60.51	c *** INTERRUPTED ***
60.45/60.51	s UNKNOWN
60.45/60.51	c Total CPU time              : 58.5481 s
60.45/60.51	c Memory used           : 1836.78 MB
60.45/60.51	c CPU time              : 58.5481 s
60.45/60.51	c 
60.45/60.51	c *** INTERRUPTED ***

Verifier Data

ERROR: no interpretation found !

Watcher Data

runsolver version 3.2.9 (svn:492) (c) roussel@cril.univ-artois.fr

command line: BIN/runsolver --timestamp -w /tmp/evaluation-result-2696292-1278016098/watcher-2696292-1278016098 -o /tmp/evaluation-result-2696292-1278016098/solver-2696292-1278016098 -C 1800 -W 2000 -M 1800 run HOME/instance-2696292-1278016098.opb 

Enforcing CPUTime limit (soft limit, will send SIGTERM then SIGKILL): 1800 seconds
Enforcing CPUTime limit (hard limit, will send SIGXCPU): 1830 seconds
Enforcing wall clock limit (soft limit, will send SIGTERM then SIGKILL): 2000 seconds
Enforcing VSIZE limit (soft limit, will send SIGTERM then SIGKILL): 1843200 KiB
Enforcing VSIZE limit (hard limit, stack expansion will fail with SIGSEGV, brk() and mmap() will return ENOMEM): 1894400 KiB
Current StackSize limit: 10240 KiB


[startup+0 s]
/proc/loadavg: 1.89 1.95 1.29 3/105 31776
/proc/meminfo: memFree=1738708/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0

[startup+0.0592741 s]
/proc/loadavg: 1.89 1.95 1.29 3/105 31776
/proc/meminfo: memFree=1738708/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
Current children cumulated CPU time (s) 0
Current children cumulated vsize (KiB) 8700

[startup+0.101278 s]
/proc/loadavg: 1.89 1.95 1.29 3/105 31776
/proc/meminfo: memFree=1738708/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
Current children cumulated CPU time (s) 0
Current children cumulated vsize (KiB) 8700

[startup+0.300303 s]
/proc/loadavg: 1.89 1.95 1.29 3/105 31776
/proc/meminfo: memFree=1738708/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
Current children cumulated CPU time (s) 0
Current children cumulated vsize (KiB) 8700

[startup+0.700351 s]
/proc/loadavg: 1.89 1.95 1.29 3/105 31776
/proc/meminfo: memFree=1738708/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
Current children cumulated CPU time (s) 0
Current children cumulated vsize (KiB) 8700

[startup+1.50045 s]
/proc/loadavg: 1.89 1.95 1.29 2/107 31778
/proc/meminfo: memFree=1714760/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=79464 CPUtime=1.48
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 10414 0 0 0 144 4 0 0 25 0 1 0 142903138 81371136 9884 1992294400 134512640 146736320 4288197744 18446744073709551615 144716523 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 19866 9884 1671 2985 0 8270 0
Current children cumulated CPU time (s) 1.48
Current children cumulated vsize (KiB) 88164

[startup+3.10064 s]
/proc/loadavg: 1.90 1.95 1.30 2/107 31778
/proc/meminfo: memFree=1690828/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=114512 CPUtime=3.08
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 21195 0 0 0 300 8 0 0 25 0 1 0 142903138 117260288 20151 1992294400 134512640 146736320 4288197744 18446744073709551615 140750228 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 28628 20151 3192 2985 0 17032 0
Current children cumulated CPU time (s) 3.08
Current children cumulated vsize (KiB) 123212

[startup+6.30104 s]
/proc/loadavg: 1.90 1.95 1.30 2/107 31778
/proc/meminfo: memFree=1616924/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=184216 CPUtime=6.29
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 42808 0 0 0 611 18 0 0 25 0 1 0 142903138 188637184 40739 1992294400 134512640 146736320 4288197744 18446744073709551615 134537322 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 46054 40740 6330 2985 0 34458 0
Current children cumulated CPU time (s) 6.29
Current children cumulated vsize (KiB) 192916

[startup+12.7008 s]
/proc/loadavg: 1.91 1.95 1.30 2/107 31778
/proc/meminfo: memFree=1452252/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=427268 CPUtime=12.67
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 108087 0 0 0 1223 44 0 0 25 0 1 0 142903138 437522432 95628 1992294400 134512640 146736320 4288197744 18446744073709551615 136180519 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 106817 95628 584 2985 0 103359 0
Current children cumulated CPU time (s) 12.67
Current children cumulated vsize (KiB) 435968

[startup+25.5004 s]
/proc/loadavg: 1.77 1.92 1.30 2/107 31778
/proc/meminfo: memFree=1262780/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=508916 CPUtime=25.47
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 209131 0 0 0 2468 79 0 0 25 0 1 0 142903138 521129984 117649 1992294400 134512640 146736320 4288197744 18446744073709551615 138733179 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 127229 117649 675 2985 0 123771 0
Current children cumulated CPU time (s) 25.47
Current children cumulated vsize (KiB) 517616

[startup+51.1005 s]
/proc/loadavg: 1.50 1.85 1.29 2/107 31778
/proc/meminfo: memFree=1032016/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=1509636 CPUtime=51.04
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 460516 0 0 0 4935 169 0 0 25 0 1 0 142903138 1545867264 177105 1992294400 134512640 146736320 4288197744 18446744073709551615 138665851 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 377409 177105 817 2985 0 373951 0
Current children cumulated CPU time (s) 51.04
Current children cumulated vsize (KiB) 1518336



Maximum VSize exceeded: sending SIGTERM then SIGKILL

[startup+60.5087 s]
/proc/loadavg: 1.43 1.82 1.29 2/107 31778
/proc/meminfo: memFree=917936/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=1880856 CPUtime=60.45
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 533890 0 0 0 5854 191 0 0 25 0 1 0 142903138 1925996544 205550 1992294400 134512640 146736320 4288197744 18446744073709551615 135849936 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 470214 205550 826 2985 0 466756 0
Current children cumulated CPU time (s) 60.45
Current children cumulated vsize (KiB) 1889556

Sending SIGTERM to process tree (bottom up)
Sleeping 2 seconds

Solver just ended. Dumping a history of the last processes samples

[startup+60.5087 s]
/proc/loadavg: 1.43 1.82 1.29 2/107 31778
/proc/meminfo: memFree=917936/2059040 swapFree=4138960/4192956
[pid=31776] ppid=31774 vsize=8700 CPUtime=0
/proc/31776/stat : 31776 (run) S 31774 31776 31691 0 -1 4202496 364 0 0 0 0 0 0 0 23 0 1 0 142903138 8908800 248 1992294400 4194304 4922060 140737105668912 18446744073709551615 219540987013 0 65536 4100 65538 18446744071562232103 0 0 17 1 0 0 0
/proc/31776/statm: 2175 248 208 178 0 68 0
[pid=31777] ppid=31776 vsize=1880856 CPUtime=60.45
/proc/31777/stat : 31777 (pb_cplex) R 31776 31776 31691 0 -1 4202496 533890 0 0 0 5854 191 0 0 25 0 1 0 142903138 1925996544 205550 1992294400 134512640 146736320 4288197744 18446744073709551615 135849936 0 0 4096 16387 0 0 0 17 1 0 0 0
/proc/31777/statm: 470214 205550 826 2985 0 466756 0
Current children cumulated CPU time (s) 60.45
Current children cumulated vsize (KiB) 1889556

Child ended because it received signal 15 (SIGTERM)

# WARNING:
# CPU time reported by wait4() is probably wrong !
# wait4(...,&childrusage) returns 31776 and gives
#  childrusage.ru_utime.tv_sec=0
#  childrusage.ru_utime.tv_usec=1999
#  childrusage.ru_stime.tv_sec=0
#  childrusage.ru_stime.tv_usec=999
# CPU time returned by wait4() is 0.002998
# while last known CPU time is 60.45
#
# Solver probably didn't/couldn't wait for its children
# Using CPU time of the last sample as value...

Real time (s): 60.5229
CPU time (s): 60.45
CPU user time (s): 58.54
CPU system time (s): 1.91
CPU usage (%): 99.8796
Max. virtual memory (cumulated for all children) (KiB): 1889556

getrusage(RUSAGE_CHILDREN,...) data:
user time used= 0.001999
system time used= 0.000999
maximum resident set size= 0
integral shared memory size= 0
integral unshared data size= 0
integral unshared stack size= 0
page reclaims= 364
page faults= 0
swaps= 0
block input operations= 0
block output operations= 0
messages sent= 0
messages received= 0
signals received= 0
voluntary context switches= 2
involuntary context switches= 2

runsolver used 0.116982 second user time and 0.290955 second system time

The end

Launcher Data

Begin job on node080 at 2010-07-01 22:28:20
IDJOB=2696292
IDBENCH=1386
IDSOLVER=1209
FILE ID=node080/2696292-1278016098
PBS_JOBID= 11198707
Free space on /tmp= 62200 MiB

SOLVER NAME= pb_cplex 2010-06-29
BENCH NAME= PB06//final/normalized-PB06/SATUNSAT-SMALLINT/submitted-PB06/liu/dbst/normalized-dbst_v40_e600_d20_mw10_6.opb.PB06.opb
COMMAND LINE= run BENCHNAME
RUNSOLVER COMMAND LINE= BIN/runsolver --timestamp -w /tmp/evaluation-result-2696292-1278016098/watcher-2696292-1278016098 -o /tmp/evaluation-result-2696292-1278016098/solver-2696292-1278016098 -C 1800 -W 2000 -M 1800  run HOME/instance-2696292-1278016098.opb

TIME LIMIT= 1800 seconds
MEMORY LIMIT= 1800 MiB
MAX NB THREAD= 0

MD5SUM BENCH= f5d8cf0048d52cf223a3574d281ac8f8
RANDOM SEED=1907641450

node080.alineos.net Linux 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009

/proc/cpuinfo:
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 15
model		: 4
model name	:                   Intel(R) Xeon(TM) CPU 3.00GHz
stepping	: 3
cpu MHz		: 3000.242
cache size	: 2048 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 5
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 ht tm syscall nx lm constant_tsc pni monitor ds_cpl cid cx16 xtpr
bogomips	: 6000.48
clflush size	: 64
cache_alignment	: 128
address sizes	: 36 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 15
model		: 4
model name	:                   Intel(R) Xeon(TM) CPU 3.00GHz
stepping	: 3
cpu MHz		: 3000.242
cache size	: 2048 KB
physical id	: 3
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 6
fpu		: yes
fpu_exception	: yes
cpuid level	: 5
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 ht tm syscall nx lm constant_tsc pni monitor ds_cpl cid cx16 xtpr
bogomips	: 5999.49
clflush size	: 64
cache_alignment	: 128
address sizes	: 36 bits physical, 48 bits virtual
power management:


/proc/meminfo:
MemTotal:      2059040 kB
MemFree:       1739236 kB
Buffers:         63620 kB
Cached:         159072 kB
SwapCached:       7052 kB
Active:         160896 kB
Inactive:        76268 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:      2059040 kB
LowFree:       1739236 kB
SwapTotal:     4192956 kB
SwapFree:      4138960 kB
Dirty:           50784 kB
Writeback:           0 kB
AnonPages:       13044 kB
Mapped:          11928 kB
Slab:            60860 kB
PageTables:       4080 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   5222476 kB
Committed_AS:   183548 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    264948 kB
VmallocChunk: 34359471699 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

Free space on /tmp at the end= 62184 MiB
End job on node080 at 2010-07-01 22:29:22