Message boards : Questions and problems : Elapsed time running slowly
Message board moderation
Author | Message |
---|---|
Send message Joined: 21 Jun 15 Posts: 13 |
I'm running 7.2.42 (x64) on Ubuntu 14.04 and this problem is there for both projects I'm running, Poem@Home and rosetta@home. Elapsed time is running very slowly, it registers one second per maybe three actual seconds. A task which was estimated to take 3 hours now shows 3:13 elapsed (wrong regarging what I wrote) and there's estimated 46 minutes remaining. The task is now 40% complete. Event Log: Ne 21. jún 2015, 11:44:53 CEST | | Starting BOINC client version 7.2.42 for x86_64-pc-linux-gnu Ne 21. jún 2015, 11:44:53 CEST | | log flags: file_xfer, sched_ops, task Ne 21. jún 2015, 11:44:53 CEST | | Libraries: libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3 Ne 21. jún 2015, 11:44:53 CEST | | Data directory: /var/lib/boinc-client Ne 21. jún 2015, 11:44:53 CEST | | No usable GPUs found Ne 21. jún 2015, 11:44:53 CEST | | Host name: xubuntu2 Ne 21. jún 2015, 11:44:53 CEST | | Processor: 1 AuthenticAMD AMD C-30 Processor [Family 20 Model 1 Stepping 0] Ne 21. jún 2015, 11:44:53 CEST | | Processor features: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat hw_pstate npt lbrv svm_lock nrip_save pausefilter vmmcall Ne 21. jún 2015, 11:44:53 CEST | | OS: Linux: 3.16.0-41-generic Ne 21. jún 2015, 11:44:53 CEST | | Memory: 1.57 GB physical, 1.95 GB virtual Ne 21. jún 2015, 11:44:53 CEST | | Disk: 49.09 GB total, 37.52 GB free Ne 21. jún 2015, 11:44:53 CEST | | Local time is UTC +2 hours Ne 21. jún 2015, 11:44:53 CEST | | Config: GUI RPCs allowed from: Ne 21. jún 2015, 11:44:53 CEST | rosetta@home | URL http://boinc.bakerlab.org/rosetta/; Computer ID 2317540; resource share 100 Ne 21. jún 2015, 11:44:53 CEST | Poem@Home | URL http://boinc.fzk.de/poem/; Computer ID 956279; resource share 100 Ne 21. jún 2015, 11:44:53 CEST | | No general preferences found - using defaults Ne 21. jún 2015, 11:44:53 CEST | | Reading preferences override file Ne 21. jún 2015, 11:44:53 CEST | | Preferences: Ne 21. jún 2015, 11:44:53 CEST | | max memory usage when active: 802.75MB Ne 21. jún 2015, 11:44:53 CEST | | max memory usage when idle: 1444.94MB Ne 21. jún 2015, 11:44:53 CEST | | max disk usage: 20.00GB Ne 21. jún 2015, 11:44:53 CEST | | don't use GPU while active Ne 21. jún 2015, 11:44:53 CEST | | suspend work if non-BOINC CPU load exceeds 25% Ne 21. jún 2015, 11:44:53 CEST | | (to change preferences, visit a project web site or select Preferences in the Manager) Ne 21. jún 2015, 11:44:53 CEST | | gui_rpc_auth.cfg is empty - no GUI RPC password protection Ne 21. jún 2015, 11:44:53 CEST | | Not using a proxy Ne 21. jún 2015, 11:45:13 CEST | rosetta@home | Starting task rb_06_20_57026_102046_ab_stage0_h003___robetta_IGNORE_THE_REST_09_05_274163_3_1 Ne 21. jún 2015, 11:45:44 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 11:46:04 CEST | | Resuming computation Ne 21. jún 2015, 11:46:19 CEST | rosetta@home | task rb_06_20_57026_102046_ab_stage0_h003___robetta_IGNORE_THE_REST_09_05_274163_3_1 suspended by user Ne 21. jún 2015, 11:48:45 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 11:48:55 CEST | | Resuming computation Ne 21. jún 2015, 11:52:06 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 11:54:37 CEST | | Resuming computation Ne 21. jún 2015, 12:02:20 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:02:30 CEST | | Resuming computation Ne 21. jún 2015, 12:06:11 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:06:22 CEST | | Resuming computation Ne 21. jún 2015, 12:06:32 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:06:42 CEST | | Resuming computation Ne 21. jún 2015, 12:07:02 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:10:03 CEST | | Resuming computation Ne 21. jún 2015, 12:26:19 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:26:50 CEST | | Resuming computation Ne 21. jún 2015, 12:33:02 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:33:32 CEST | | Resuming computation Ne 21. jún 2015, 12:33:42 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:34:12 CEST | | Resuming computation Ne 21. jún 2015, 12:34:33 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:35:23 CEST | | Resuming computation Ne 21. jún 2015, 12:36:04 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:36:14 CEST | | Resuming computation Ne 21. jún 2015, 12:36:24 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:36:44 CEST | | Resuming computation Ne 21. jún 2015, 12:37:14 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:37:34 CEST | | Resuming computation Ne 21. jún 2015, 12:38:25 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:38:45 CEST | | Resuming computation Ne 21. jún 2015, 12:40:05 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 12:40:15 CEST | | Resuming computation Ne 21. jún 2015, 12:43:47 CEST | Poem@Home | Sending scheduler request: To fetch work. Ne 21. jún 2015, 12:43:47 CEST | Poem@Home | Requesting new tasks for CPU Ne 21. jún 2015, 12:43:50 CEST | Poem@Home | Scheduler request completed: got 4 new tasks Ne 21. jún 2015, 12:43:52 CEST | Poem@Home | Started download of 8719_1434737229.in_1434737229_674677229 Ne 21. jún 2015, 12:43:52 CEST | Poem@Home | Started download of 5436_1434737221.in_1434737221_1276875377 Ne 21. jún 2015, 12:43:54 CEST | Poem@Home | Finished download of 8719_1434737229.in_1434737229_674677229 Ne 21. jún 2015, 12:43:54 CEST | Poem@Home | Finished download of 5436_1434737221.in_1434737221_1276875377 Ne 21. jún 2015, 12:43:54 CEST | Poem@Home | Started download of 26985_1434737221.in_1434737221_599383641 Ne 21. jún 2015, 12:43:54 CEST | Poem@Home | Started download of 31306_1434737232.in_1434737232_950728243 Ne 21. jún 2015, 12:43:55 CEST | Poem@Home | Finished download of 26985_1434737221.in_1434737221_599383641 Ne 21. jún 2015, 12:43:55 CEST | Poem@Home | Finished download of 31306_1434737232.in_1434737232_950728243 Ne 21. jún 2015, 13:16:50 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 13:17:00 CEST | | Resuming computation Ne 21. jún 2015, 14:12:03 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:12:53 CEST | | Resuming computation Ne 21. jún 2015, 14:13:13 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:14:23 CEST | | Resuming computation Ne 21. jún 2015, 14:14:44 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:15:14 CEST | | Resuming computation Ne 21. jún 2015, 14:15:24 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:15:34 CEST | | Resuming computation Ne 21. jún 2015, 14:15:44 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:15:54 CEST | | Resuming computation Ne 21. jún 2015, 14:17:55 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:22:16 CEST | | Resuming computation Ne 21. jún 2015, 14:33:31 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:33:41 CEST | | Resuming computation Ne 21. jún 2015, 14:34:11 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 14:34:21 CEST | | Resuming computation Ne 21. jún 2015, 15:22:21 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:23:11 CEST | | Resuming computation Ne 21. jún 2015, 15:24:42 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:24:52 CEST | | Resuming computation Ne 21. jún 2015, 15:25:02 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:25:12 CEST | | Resuming computation Ne 21. jún 2015, 15:25:52 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:26:22 CEST | | Resuming computation Ne 21. jún 2015, 15:26:53 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:27:03 CEST | | Resuming computation Ne 21. jún 2015, 15:27:43 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:28:03 CEST | | Resuming computation Ne 21. jún 2015, 15:29:33 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:29:54 CEST | | Resuming computation Ne 21. jún 2015, 15:30:14 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:30:24 CEST | | Resuming computation Ne 21. jún 2015, 15:30:44 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:31:04 CEST | | Resuming computation Ne 21. jún 2015, 15:50:32 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 15:51:02 CEST | | Resuming computation Ne 21. jún 2015, 16:00:55 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 16:01:05 CEST | | Resuming computation Ne 21. jún 2015, 16:22:54 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 16:23:04 CEST | | Resuming computation Ne 21. jún 2015, 16:52:46 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 16:52:56 CEST | | Resuming computation Ne 21. jún 2015, 16:57:38 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 16:57:48 CEST | | Resuming computation Ne 21. jún 2015, 17:23:38 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:23:48 CEST | | Resuming computation Ne 21. jún 2015, 17:31:21 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:32:21 CEST | | Resuming computation Ne 21. jún 2015, 17:32:31 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:32:51 CEST | | Resuming computation Ne 21. jún 2015, 17:34:42 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:34:52 CEST | | Resuming computation Ne 21. jún 2015, 17:35:22 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:37:13 CEST | | Resuming computation Ne 21. jún 2015, 17:38:03 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:38:13 CEST | | Resuming computation Ne 21. jún 2015, 17:38:44 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:40:24 CEST | | Resuming computation Ne 21. jún 2015, 17:40:34 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:40:44 CEST | | Resuming computation Ne 21. jún 2015, 17:41:04 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:41:34 CEST | | Resuming computation Ne 21. jún 2015, 17:41:45 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:42:35 CEST | | Resuming computation Ne 21. jún 2015, 17:44:05 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:44:15 CEST | | Resuming computation Ne 21. jún 2015, 17:45:36 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:50:38 CEST | | Resuming computation Ne 21. jún 2015, 17:51:59 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:52:39 CEST | | Resuming computation Ne 21. jún 2015, 17:52:49 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 17:52:59 CEST | | Resuming computation Ne 21. jún 2015, 18:03:13 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 18:03:23 CEST | | Resuming computation Ne 21. jún 2015, 18:55:34 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 18:55:54 CEST | | Resuming computation Ne 21. jún 2015, 18:56:04 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 18:58:05 CEST | | Resuming computation Ne 21. jún 2015, 18:58:15 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 18:58:25 CEST | | Resuming computation Ne 21. jún 2015, 18:59:25 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 18:59:27 CEST | Poem@Home | task poempp_Snapvillin_energy2_1434664483_2147157932_0 suspended by user Ne 21. jún 2015, 18:59:30 CEST | rosetta@home | task rb_06_20_57026_102046_ab_stage0_h003___robetta_IGNORE_THE_REST_09_05_274163_3_1 resumed by user Ne 21. jún 2015, 18:59:35 CEST | | Resuming computation Ne 21. jún 2015, 18:59:50 CEST | Poem@Home | task poempp_Snapvillin_energy2_1434664483_2147157932_0 resumed by user Ne 21. jún 2015, 18:59:53 CEST | rosetta@home | task rb_06_20_57026_102046_ab_stage0_h003___robetta_IGNORE_THE_REST_09_05_274163_3_1 suspended by user Ne 21. jún 2015, 19:00:16 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 19:03:57 CEST | | Resuming computation Ne 21. jún 2015, 19:14:01 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 19:14:21 CEST | | Resuming computation Ne 21. jún 2015, 19:16:53 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 19:17:03 CEST | | Resuming computation Ne 21. jún 2015, 19:17:13 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 19:17:23 CEST | | Resuming computation Ne 21. jún 2015, 19:17:53 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 19:18:03 CEST | | Resuming computation Ne 21. jún 2015, 19:18:13 CEST | | Suspending computation - CPU is busy Ne 21. jún 2015, 19:18:23 CEST | | Resuming computation |
Send message Joined: 21 Jun 15 Posts: 13 |
After another hour of BOINC's time (3 actual hours) the task is at 50% and the remaining time increased to 1 hour. This is the Poem@Home task. A rosetta@home task I have here has 18 hours 37 minutes remaining and I have it since yesterday. If it goes like the current one I doubt it even has a chance of being done before the deadline. I have it set not to use more than 40% of the processor. Does that have to do with it? Anyone has an idea how I can make it display the time correctly or make it run faster (other than making it use more CPU)? |
![]() Send message Joined: 29 Aug 05 Posts: 15634 ![]() |
Ne 21. jún 2015, 19:00:16 CEST | | Suspending computation - CPU is busy How about turning that off? In local preferences set While processor usage is less than X percent to 100. |
Send message Joined: 21 Jun 15 Posts: 13 |
Thanks, that'll help with the time tasks take to complete. But it doesn't change the fact that elapsed time is running slowly. |
Send message Joined: 5 Oct 06 Posts: 5149 ![]() |
Thanks, that'll help with the time tasks take to complete. But it doesn't change the fact that elapsed time is running slowly. 'Elapsed time' is the time spent in the 'running' state. The time spent in the 'suspended' state isn't counted. |
Send message Joined: 21 Jun 15 Posts: 13 |
You can see it running at about 1/3 speed of actual time when you look at the counter while it's in 'running' state. It made 10 seconds for 27 actual seconds when I measured it. |
Send message Joined: 5 Oct 06 Posts: 5149 ![]() |
You can see it running at about 1/3 speed of actual time when you look at the counter while it's in 'running' state. It made 10 seconds for 27 actual seconds when I measured it. That possibly suggests that your CPU is 'overcommitted' - running more applications and processes, not necessarily related to BOINC and its projects, than can be handled in real time. In the Windows world, if that can't be accounted for by the applications you know you're running, we'd suggest that you run a virus check to be sure that nothing is stealing CPU cycles. But that can't be a problem with Linux, of course ;) What do your tasks show for CPU time (task 'properties' from BOINC manager while running or completed but not yet reported: on project website after reporting)? Do those figures make sense, when compared with either reported 'elapsed' time or genuine wall-clock time? |
Send message Joined: 21 Jun 15 Posts: 13 |
CPU time for the current task is about 40% (precisely 47%) of the reported elapsed time, BOINC is currently set to use 40% of CPU so in that way it makes sense. |
Send message Joined: 21 Jun 15 Posts: 13 |
I think I found the source of the problem - BOINC doesn't fully use the percentage of CPU it's allowed to. At 60% allowed it's pretty good, at 40% it seems to use around 1/3 of the 40% (it fluctuates). Now to figure out how to make it use the full 40%. |
![]() Send message Joined: 29 Aug 05 Posts: 15634 ![]() |
BOINC doesn't fully use the percentage of CPU it's allowed to. No, and from the beginning it hasn't done so. When using the CPU time value, the percentage you set tells BOINC to suspend for so many seconds and run for the other on a basis of ten seconds. So 40% will have BOINC allow the science application to run for 4 seconds every 10 seconds, and pause it the other 6 seconds. It will not run science applications at a sustained 40% load only. |
![]() ![]() Send message Joined: 23 Feb 08 Posts: 2516 ![]() |
BOINC doesn't fully use the percentage of CPU it's allowed to. It can't run at 40%, because no operating system has a method to do so. Threads to an operating system are either run as fast as you can or suspend and wait. I'll admit that some of the new CPU's have the ability to change clock rates on the fly, but that still does not change the fact that the thread is either in run state or wait state. There isn't a go slow state. Also the percent of CPU was originally intended for laptops to help keep them cool enough to keep on your lap. It is intended as a crude thermal control. It can be useful for other things. ![]() |
Send message Joined: 6 Jul 10 Posts: 585 ![]() |
Try ThreadMaster or ThreadMasterGUI on Windows, and be awed at how you can slow BOINC, at a science app level, at millisecond level control by OS service, giving a very smooth crunch, no Hacksaw Jim. Not this BOINC way at 40%... run 2 seconds, pause 3, an excellent way to rev the fans up and down, and increase thermal wear, cool, heat, cool, heat. Coelum Non Animum Mutant, Qui Trans Mare Currunt |
Send message Joined: 21 Jun 15 Posts: 13 |
So 40% will have BOINC allow the science application to run for 4 seconds every 10 seconds, and pause it the other 6 seconds. It will not run science applications at a sustained 40% load only. Actually when I set it to 60% and run 'top', the % of CPU used is really around 60 whereas when I set it to 40% it's under 20 most of the time. (No other process is taking a significant amount of CPU BTW.) |
Send message Joined: 5 Oct 06 Posts: 5149 ![]() |
So 40% will have BOINC allow the science application to run for 4 seconds every 10 seconds, and pause it the other 6 seconds. It will not run science applications at a sustained 40% load only. That possibly depends how long 'top' averages its reported CPU figure over. If it's designed to give a general overview over two or three seconds, you might get a different impression from a profiling tool with millisecond resolution. |
Send message Joined: 21 Jun 15 Posts: 13 |
So you think it actually uses 40% on average? Because what top reports is much lower. With the setting on 60% top also reports around 60% and elapsed time runs pretty much OK (not so much with the setting on 40% as I have said earlier). |
Send message Joined: 5 Oct 06 Posts: 5149 ![]() |
So you think it actually uses 40% on average? Because what top reports is much lower. With the setting on 60% top also reports around 60% and elapsed time runs pretty much OK (not so much with the setting on 40% as I have said earlier). I don't think anything - I don't know, and I'm as interested as you to find out what is making elapsed time run slowly (in case it needs fixing). I'm just suggesting that in order to get a true understanding, you probably need to understand the characteristics of the measuring tool you're using, too - and maybe compare with the answers given by other measurements. |
Send message Joined: 21 Jun 15 Posts: 13 |
This seems to be going over my head. I know top reports average usage per a few seconds. But it's constantly much lower than the 40% it should be. With the setting at 60% it's more or less correct. I have no idea what this says about anything other than that BOINC is using less CPU than it's supposed to when it's set to use at most 40%. And I don't know what other tools I should try or what I should take from what they report. |
Send message Joined: 20 Nov 12 Posts: 801 ![]() |
When you have top running press 'h' for help. From there you'll find d or s Set update interval Set it to maybe something like 60 seconds. |
![]() Send message Joined: 29 Aug 05 Posts: 15634 ![]() |
It's not that BOINC runs the science application for 4 seconds and pauses it for 6 seconds consecutively when set to 40%. It'll do it in timings like this: 100%: it runs all the time. 90%: 9 second run, 1 second idle. 80%: 4 second run, 1 second idle. 70%: 3 second run, 1 second idle, 2 second run, 1 second idle, 3 second run, etc. 60%: 1 second run, 1 second idle, 2 second run, 1 second idle, 1 second run, etc. 50%: 1 second run, 1 second idle, 1 second run, 1 second idle, etc. 40%: 1 second run, 1 second idle, 1 second run, 2 seconds idle, 1 second run, etc. 30%: 1 second run, 1 second idle, 1 second run, 3 seconds idle, 1 second run, 2 seconds idle, etc. 20%: 1 second run, 4 seconds idle, 1 second run, 4 seconds idle, etc. 10%: 1 second run, 9 seconds idle. 0%: It's paused. When it does the run, it'll do that full CPU. But because it can take a couple of seconds before a CPU goes to full load, you will see the see-saw, but it won't top 100% unless at the higher percentages, where the run time is higher. |
![]() ![]() Send message Joined: 23 Feb 08 Posts: 2516 ![]() |
All of this timings, ignores a reality. Those times are what BOINC requests from the O/S. The O/S has overheads which it may include in these times, i.e. context switches and interrupt handlers. Never mind as BOINC uses a simple timer so page fault time to start and stop will be included. So don't expect it to be exact, just close. As others have said, the sample frequency top uses could interact with BOINC to get some weird results, especially if jobs are paging. IIRC TOP uses an exact multiple of one second, you might get the source and change that to some odd fraction so it does not match the pattern that BOINC uses. ![]() |
Copyright © 2025 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.