diff options
author | Paul Turner <pjt@google.com> | 2012-03-14 07:39:04 -0700 |
---|---|---|
committer | Paul Turner <pjt@google.com> | 2012-03-14 20:42:33 -0700 |
commit | 8bd3d3206b40d3c42d11b036d9ad39091087bb19 (patch) | |
tree | 86154df4e79b3466b2c87e745a1821acae9011b1 | |
parent | 17adf0e133d14a57681dfb09b53dbce238a68ecd (diff) | |
download | linsched-alpha.tar.gz |
linsched: initial simulator code and testslinsched-alpha
Adds tools/linsched/...
This includes:
- The simulator code.
- Stubs for scheduler:LinSched interaction
- Test cases and validation tools.
TODO: This commit needs to be broken down at a finer granularity,
Signed-off-by: Paul Turner <pjt@google.com>
549 files changed, 9435 insertions, 0 deletions
diff --git a/tools/linsched/Makefile b/tools/linsched/Makefile new file mode 100644 index 00000000000000..4266323ed83a6e --- /dev/null +++ b/tools/linsched/Makefile @@ -0,0 +1,22 @@ +LINUXDIR = ./../.. +LINSCHED_DIR=${LINUXDIR}/tools/linsched +include Makefile.inc + +TEST_LIB = test_lib.o + +.PHONY: run_all_tests all +.DEFAULT_GOAL := all + +all: ${TEST_LIB} ${OBJ_FILES} + $(MAKE) $(MFLAGS) --directory=tests all + $(MAKE) $(MFLAGS) --directory=validation all + +run_unit_tests: all + $(MAKE) $(MFLAGS) --directory=tests run_unit_tests + +run_all_tests: all + $(MAKE) $(MFLAGS) --directory=tests run_all_tests + +clean: + rm -f ${TESTS} ${OBJ_FILES} ${DEPS} ${GEN_HDR} + $(MAKE) $(MFLAGS) --directory=tests clean diff --git a/tools/linsched/Makefile.inc b/tools/linsched/Makefile.inc new file mode 100644 index 00000000000000..441f7e3029abf9 --- /dev/null +++ b/tools/linsched/Makefile.inc @@ -0,0 +1,109 @@ +CC = ${CROSS_COMPILE}gcc + +CFLAGS = -g -O2 -m64 -D__KERNEL__ -D__LINSCHED__ -Wall -Wundef -Wstrict-prototypes \ + -Werror-implicit-function-declaration -fno-common \ + -I${LINSCHED_DIR}/include -I${LINUXDIR}/include \ + -I${LINUXDIR}/arch/linsched/include -I${LINSCHED_DIR}/ \ + -include ${LINSCHED_DIR}/include/generated/autoconf.h \ + -Wno-pointer-sign -include ${LINUXDIR}/include/linux/kconfig.h + +# Don't use system headers (such as /usr/include/asm) for the kernel +CFLAGS_LINUX = $(CFLAGS) -nostdinc -isystem $(shell $(CC) -print-file-name=include) \ + -include ${LINSCHED_DIR}/linux_linsched.h \ + -Wno-unused -Wno-strict-aliasing + +LFLAGS = -lm + +LINSCHED_OBJS = ${LINSCHED_DIR}/linux_linsched.o \ + ${LINSCHED_DIR}/numa.o \ + ${LINSCHED_DIR}/hrtimer.o \ + ${LINSCHED_DIR}/stubs.o \ + ${LINSCHED_DIR}/test_lib.o \ + ${LINSCHED_DIR}/linsched.o \ + ${LINSCHED_DIR}/load_balance_score.o \ + ${LINSCHED_DIR}/sanity_check.o \ + ${LINSCHED_DIR}/nohz_tracking.o \ + ${LINSCHED_DIR}/linsched_rand.o \ + ${LINSCHED_DIR}/linsched_sim.o \ + ${LINSCHED_DIR}/stubs/sched.o + +LINUX_OBJS = ${LINUXDIR}/kernel/notifier.o \ + ${LINUXDIR}/kernel/timer.o \ + ${LINUXDIR}/kernel/time/clockevents.o \ + ${LINUXDIR}/kernel/sched/clock.o \ + ${LINUXDIR}/kernel/sched/core.o \ + ${LINUXDIR}/kernel/sched/cpupri.o \ + ${LINUXDIR}/kernel/sched/debug.o \ + ${LINUXDIR}/kernel/sched/idle_task.o \ + ${LINUXDIR}/kernel/sched/fair.o \ + ${LINUXDIR}/kernel/sched/rt.o \ + ${LINUXDIR}/kernel/sched/stats.o \ + ${LINUXDIR}/kernel/sched/stop_task.o \ + ${LINUXDIR}/kernel/fork.o \ + ${LINUXDIR}/arch/linsched/kernel/init_task.o \ + ${LINUXDIR}/kernel/exit.o ${LINUXDIR}/kernel/time.o \ + ${LINUXDIR}/kernel/cpu.o \ + ${LINUXDIR}/kernel/rwsem.o \ + ${LINUXDIR}/kernel/mutex.o \ + ${LINUXDIR}/kernel/hrtimer.o \ + ${LINUXDIR}/kernel/pid.o \ + ${LINUXDIR}/kernel/posix-cpu-timers.o \ + ${LINUXDIR}/kernel/spinlock.o \ + ${LINUXDIR}/kernel/time/timekeeping.o \ + ${LINUXDIR}/kernel/time/ntp.o \ + ${LINUXDIR}/kernel/time/jiffies.o \ + ${LINUXDIR}/kernel/time/tick-common.o \ + ${LINUXDIR}/kernel/time/tick-oneshot.o \ + ${LINUXDIR}/kernel/time/tick-sched.o \ + ${LINUXDIR}/kernel/time/tick-broadcast.o \ + ${LINUXDIR}/kernel/wait.o \ + ${LINUXDIR}/arch/linsched/init.o \ + ${LINUXDIR}/arch/linsched/kernel/process.o \ + ${LINUXDIR}/arch/linsched/kernel/smp.o \ + ${LINUXDIR}/arch/linsched/kernel/pid.o \ + ${LINUXDIR}/arch/linsched/kernel/mm.o \ + ${LINUXDIR}/arch/linsched/kernel/io.o \ + ${LINUXDIR}/arch/linsched/kernel/fs.o \ + ${LINUXDIR}/arch/linsched/kernel/rcu.o \ + ${LINUXDIR}/arch/linsched/kernel/irq.o \ + ${LINUXDIR}/arch/linsched/kernel/version.o \ + ${LINUXDIR}/arch/linsched/kernel/percpu.o \ + ${LINUXDIR}/arch/linsched/kernel/lock.o \ + ${LINUXDIR}/arch/linsched/kernel/cred.o \ + ${LINUXDIR}/arch/linsched/kernel/cgroup.o \ + ${LINUXDIR}/arch/linsched/kernel/misc.o \ + ${LINUXDIR}/lib/rbtree.o ${LINUXDIR}/lib/div64.o \ + ${LINUXDIR}/lib/cpumask.o ${LINUXDIR}/lib/bitmap.o \ + ${LINUXDIR}/lib/list_debug.o \ + ${LINUXDIR}/lib/find_next_bit.o \ + ${LINUXDIR}/lib/hweight.o ${LINUXDIR}/lib/reciprocal_div.o \ + ${LINUXDIR}/lib/plist.o \ + ${LINUXDIR}/lib/ctype.o ${LINUXDIR}/lib/string.o \ + ${LINUXDIR}/lib/hexdump.o ${LINUXDIR}/lib/percpu_counter.o \ + ${LINUXDIR}/lib/timerqueue.o \ + ${LINUXDIR}/lib/find_last_bit.o \ + ${LINUXDIR}/lib/flex_array.o \ + ${LINUXDIR}/lib/rwsem-spinlock.o \ + ${LINUXDIR}/lib/kstrtox.o + +LD_PERCPU = ${LD} -r -T ${LINSCHED_DIR}/linsched.lds + +OBJ_FILES = ${LINSCHED_OBJS} ${LINUX_OBJS} +DEPS := ${OBJ_FILES:.o=.d} +-include ${DEPS} + +TIME_HDR=${LINUXDIR}/kernel/timeconst.h +${TIME_HDR}: ${LINUXDIR}/kernel/timeconst.pl + @echo "(Generating timeconst.h)" + @perl ${LINUXDIR}/kernel/timeconst.pl 1000 > $@ + +${LINUX_OBJS}: %.o: %.c ${TIME_HDR} + @echo "CC KERNEL $<" + @${CC} -o $@ ${CFLAGS_LINUX} -c $< -MMD + +%.o: %.c + @echo "CC SIM $<" + @${CC} ${CFLAGS} -o $@ -c $< -MMD + + + diff --git a/tools/linsched/README b/tools/linsched/README new file mode 100644 index 00000000000000..eb104481ccd5d6 --- /dev/null +++ b/tools/linsched/README @@ -0,0 +1,60 @@ +WHAT IS LINSCHED? + + LinSched is a user-space program that hosts the Linux scheduling subsystem. + Its purpose is to provide a tool for observing and modifying the behavior + of the Linux scheduler. This makes it a valuable tool in prototyping new + Linux scheduling policies, in a way that may be easier (or otherwise less + painful or time-consuming) to many developers when compared to working with + real hardware. Due to the high degree of code sharing between LinSched and + the Linux scheduler, porting LinSched code to Linux is reasonably + straightforward. LinSched may be especially useful to those who are new to + Linux scheduler development. + +WHAT ARE SOME TYPICAL USES OF LINSCHED? + + In addition to bringing all the advantages of userspace development and + debugging to the scheduler code, Linsched also serves as a testing tool + to validate the correctness of the scheduler. Linsched has the notion of + hardware topologies which allows the user to create arbitrary hardware + models and runs simulations of scheduler behavior on them. This allows + for development of scheduler code without having access to specific types + of hardware. + +HOW DO I BUILD/RUN LINSCHED TESTS? + + Simply running make in the linsched subdirectory should build the code + (ensure that you are using gcc v4.4+). To run tests use: + + make run_all_tests + + which validates some basic kernel functionality on a bunch of hardware + models. + +WHAT LINUX KERNEL FEATURES ARE MODELED IN LINSCHED? + + The following kernel features are supported for simulation: + -- Group scheduling + -- Ability to specify arbitrary sleep/wakeup patterns for tasks + -- High resolution timers + -- Tickless scheduler (no hz) + -- sched domain support for all levels + + The above features can be used to generate very accurate simulations + that mimic real world workloads. + +HOW DO I ADD NEW HARDWARE TOPOLOGIES? + + See linsched/linux_linsched.h for examples on how hardware topologies + are defined. Select the required topology when you run your tests. See + linsched/basic_tests.c for examples. + +WHAT ARE SOME OF THE LIMITATIONS? + + Linsched does not verify locking in the scheduler code since its + execution is single threaded. Lock contention and other SMP artifacts + are also not captured in the simulation. Consequently performance + impacts due to these are not covered. + + + + diff --git a/tools/linsched/hrtimer.c b/tools/linsched/hrtimer.c new file mode 100644 index 00000000000000..26be1d8c5954b1 --- /dev/null +++ b/tools/linsched/hrtimer.c @@ -0,0 +1,256 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * This file contains Linux variables and functions that have been "defined + * away" or exist here in a modified form to avoid including an entire Linux + * source file that might otherwise lead to a "cascade" of dependency issues. + * It also includes certain LinSched variables to which some Linux functions + * and definitions now map. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include "linsched.h" +#include <linux/tick.h> +#include <linux/interrupt.h> + +#include "load_balance_score.h" +#include "nohz_tracking.h" +#include "sanity_check.h" + +static int linsched_hrt_set_next_event(unsigned long evt, + struct clock_event_device *d); +static void linsched_hrt_set_mode(enum clock_event_mode mode, + struct clock_event_device *d); +static void linsched_hrt_broadcast(const struct cpumask *mask); +static cycle_t linsched_source_read(struct clocksource *cs); + +/* Some assumptions fail if we stay at time 0 during setup, so just dodge it */ +u64 current_time = 100; +static u64 next_event[NR_CPUS]; +static struct clock_event_device linsched_hrt[NR_CPUS]; + +static struct clock_event_device linsched_hrt_base = { + .name = "linsched-events", + .features = CLOCK_EVT_FEAT_ONESHOT, + .max_delta_ns = 1000000000L, + .min_delta_ns = 5000, + .mult = 1, + .shift = 0, + .rating = 100, + .irq = -1, + .cpumask = NULL, + .set_next_event = linsched_hrt_set_next_event, + .set_mode = linsched_hrt_set_mode, + .broadcast = linsched_hrt_broadcast +}; + +/* We need a clocksource other than jiffies in order to run + * HIGH_RES_TIMERS, so replace the default. jiffies will then be + * updated by kernel/time/tick-common.c and + * kernel/time/tick-sched.c */ +static struct clocksource linsched_hrt_source = { + .name = "linsched-clocksource", + .rating = 100, + .mask = (cycle_t) -1, + .mult = 1, + .shift = 0, + .flags = CLOCK_SOURCE_VALID_FOR_HRES | CLOCK_SOURCE_IS_CONTINUOUS, + .read = linsched_source_read, +}; + +void linsched_init_hrtimer(void) +{ + long i; + + for (i = 0; i < nr_cpu_ids; i++) { + struct clock_event_device *dev = &linsched_hrt[i]; + memcpy(dev, &linsched_hrt_base, + sizeof(struct clock_event_device)); + dev->cpumask = cpumask_of(i); + + next_event[i] = KTIME_MAX; + + linsched_change_cpu(i); + clockevents_register_device(dev); + } + /* Normally this would be called when looking through + * clocksources, but we're not using the entire clocksource + * infrastructure at the moment */ + tick_clock_notify(); + for (i = 0; i < nr_cpu_ids; i++) { + linsched_change_cpu(i); + hrtimer_run_pending(); + } + linsched_change_cpu(0); +} + +void linsched_current_handler(void) +{ + struct task_struct *old; + + do { + struct task_data *td = task_thread_info(current)->td; + old = current; + + if (td && td->handle_task) { + td->handle_task(current, td->data); + } + /* we keep calling handle_task so that tasks + * can have smaller than clock gran runtimes if they want */ + linsched_check_resched(); + } while (current != old); + + /* we should always be done by this point */ + BUG_ON(need_resched()); +} + +extern cpumask_t linsched_cpu_softirq_raised; +void process_all_softirqs(void) +{ + int cpu, old_cpu = smp_processor_id(); + + if (cpumask_empty(&linsched_cpu_softirq_raised)) + return; + + while (!cpumask_empty(&linsched_cpu_softirq_raised)) { + cpu = cpumask_first(&linsched_cpu_softirq_raised); + linsched_change_cpu(cpu); + do_softirq(); + + /* we may have pulled something over that wants to run */ + linsched_current_handler(); + } + + BUG_ON(irqs_disabled()); + linsched_change_cpu(old_cpu); +} + +DECLARE_PER_CPU(struct tick_sched, tick_cpu_sched); +void linsched_check_idle_cpu(void) +{ + int cpu = smp_processor_id(); + struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); + + if (ts->inidle && !idle_cpu(cpu)) { + tick_nohz_idle_exit(); + } +} + +/* Run a simulation for some number of ticks. Each tick, + * scheduling and load balancing decisions are made. Obviously, we + * could create tasks, change priorities, etc., at certain ticks + * if we desired, rather than just running a simple simulation. + * (Tasks can also be removed by having them exit.) + */ +void linsched_run_sim(int sim_ticks) +{ + /* + * We bias initial_jiffies ahead by one since we will not schedule away + * from idle until the first event (specifically, the first timer + * tick). + */ + u64 initial_jiffies = jiffies; + cpumask_t runnable; + int i; + + for_each_online_cpu(i) { + linsched_change_cpu(i); + linsched_current_handler(); + } + + simulation_started = true; + while (current_time < KTIME_MAX + && jiffies < initial_jiffies + sim_ticks) { + u64 evt = KTIME_MAX; + /* find the next event */ + for (i = 0; i < nr_cpu_ids; i++) { + if (next_event[i] < evt) { + evt = next_event[i]; + cpumask_clear(&runnable); + } + if (next_event[i] == evt) { + cpumask_set_cpu(i, &runnable); + } + } + current_time = evt; + int active_cpu = 0; + + compute_lb_info(); + + /* It might be useful to randomize the ordering here, although + * it should be rare that there will actually be two active + * cpus at once as the tick code offsets the main scheduler + * ticks for each cpu */ + for_each_cpu(active_cpu, &runnable) { + next_event[active_cpu] = KTIME_MAX; + linsched_change_cpu(active_cpu); + local_irq_disable(); + irq_enter(); + linsched_hrt[active_cpu].event_handler(&linsched_hrt + [active_cpu]); + irq_exit(); + local_irq_enable(); + /* a handler should never leave this state changed */ + BUG_ON(smp_processor_id() != active_cpu); + + process_all_softirqs(); + linsched_rcu_invoke(); + + BUG_ON(irqs_disabled()); + if (idle_cpu(active_cpu) && !need_resched()) { + tick_nohz_idle_enter(); + } else { + linsched_current_handler(); + } + + track_nohz_residency(active_cpu); + run_sanity_check(); + } + } +} + +struct clocksource *__init __weak clocksource_default_clock(void) +{ + return &linsched_hrt_source; +} + +static int linsched_hrt_set_next_event(unsigned long evt, + struct clock_event_device *d) +{ + next_event[d - linsched_hrt] = + ktime_to_ns(ktime_add_safe + (ns_to_ktime(current_time), ns_to_ktime(evt))); + return 0; +} + +static void linsched_hrt_set_mode(enum clock_event_mode mode, + struct clock_event_device *d) +{ +} + +static void linsched_hrt_broadcast(const struct cpumask *mask) +{ +} + +static cycle_t linsched_source_read(struct clocksource *cs) +{ + return current_time; +} + +u64 sched_clock(void) +{ + return current_time; +} diff --git a/tools/linsched/include/generated/autoconf.h b/tools/linsched/include/generated/autoconf.h new file mode 100644 index 00000000000000..488405b828d2b6 --- /dev/null +++ b/tools/linsched/include/generated/autoconf.h @@ -0,0 +1,252 @@ +/* + * Automatically generated C config: don't edit + * Linux kernel version: 2.6.34 + * Thu Aug 11 17:14:24 2011 + */ +#define AUTOCONF_INCLUDED +#define CONFIG_DEFAULT_HOSTNAME "LinSched" +#define CONFIG_FRAME_WARN 2048 +#define CONFIG_COMPAT_BRK 1 +#define CONFIG_DEFAULT_SECURITY_DAC 1 +#define CONFIG_POSIX_MQUEUE_SYSCTL 1 +#define CONFIG_PROC_KCORE 1 +#define CONFIG_XTERM_CHAN 1 +#define CONFIG_UML_NET_MCAST 1 +#define CONFIG_TIMERFD 1 +#define CONFIG_ENABLE_MUST_CHECK 1 +#define CONFIG_EVENTFD 1 +#define CONFIG_X86_CPU 1 +#define CONFIG_UML_RANDOM 1 +#define CONFIG_LD_SCRIPT_DYN 1 +#define CONFIG_X86_TSC 1 +#define CONFIG_SMP 1 +#define CONFIG_UML_X86 1 +#define CONFIG_RCU_FANOUT 64 +#define CONFIG_BLK_DEV 1 +#define CONFIG_CRYPTO_AES_MODULE 1 +#define CONFIG_MODULES 1 +#define CONFIG_PHYS_ADDR_T_64BIT 1 +#define CONFIG_CPU_SUP_INTEL 1 +#define CONFIG_EXT2_FS 1 +#define CONFIG_EXT3_FS 1 +#define CONFIG_DNOTIFY 1 +#define CONFIG_UML_NET_SLIRP 1 +#define CONFIG_CRYPTO_ALGAPI2_MODULE 1 +#define CONFIG_DEFCONFIG_LIST "arch/$ARCH/defconfig" +#define CONFIG_SLAB 1 +#define CONFIG_INOTIFY 1 +#define CONFIG_HOTPLUG 1 +#define CONFIG_CRYPTO_RNG_MODULE 1 +#define CONFIG_LOCALVERSION_AUTO 1 +#define CONFIG_SLHC_MODULE 1 +/* CONFIG_PROC_FS is not defined */ +#define CONFIG_SCHED_DEBUG 1 +#define CONFIG_INET 1 +#define CONFIG_RT_MUTEXES 1 +#define CONFIG_DEBUG_MEMORY_INIT 1 +#define CONFIG_WLAN 1 +#define CONFIG_TCP_CONG_CUBIC 1 +#define CONFIG_X86_L1_CACHE_SHIFT 6 +#define CONFIG_UML_NET 1 +#define CONFIG_CC_OPTIMIZE_FOR_SIZE 1 +#define CONFIG_PROC_PAGE_MONITOR 1 +#define CONFIG_SLIP_MODULE 1 +#define CONFIG_IOSCHED_CFQ 1 +#define CONFIG_PAGEFLAGS_EXTENDED 1 +#define CONFIG_GENERIC_BUG 1 +#define CONFIG_SWAP 1 +#define CONFIG_CRC32 1 +#define CONFIG_XFRM 1 +#define CONFIG_DEFAULT_CFQ 1 +#define CONFIG_EXTRA_FIRMWARE "" +#define CONFIG_CRYPTO_ANSI_CPRNG_MODULE 1 +#define CONFIG_UNIX 1 +#define CONFIG_STDERR_CONSOLE 1 +#define CONFIG_X86_XADD 1 +#define CONFIG_UML_NET_DAEMON 1 +#define CONFIG_SIGNALFD 1 +#define CONFIG_UID16 1 +#define CONFIG_64BIT 1 +#define CONFIG_BLK_DEV_NBD_MODULE 1 +#define CONFIG_IKCONFIG 1 +#define CONFIG_BINFMT_MISC_MODULE 1 +#define CONFIG_IP_FIB_HASH 1 +#define CONFIG_DEFAULT_MMAP_MIN_ADDR 4096 +#define CONFIG_ANON_INODES 1 +#define CONFIG_GENERIC_FIND_LAST_BIT 1 +#define CONFIG_SLABINFO 1 +#define CONFIG_NLS_DEFAULT "iso8859-1" +#define CONFIG_BLK_DEV_UBD 1 +#define CONFIG_SPLIT_PTLOCK_CPUS 4 +#define CONFIG_VM_EVENT_COUNTERS 1 +#define CONFIG_CRYPTO_RNG2_MODULE 1 +#define CONFIG_CON_CHAN "xterm" +#define CONFIG_GENERIC_FIND_NEXT_BIT 1 +#define CONFIG_X86_CMOV 1 +#define CONFIG_REISERFS_FS 1 +#define CONFIG_SYSCTL_SYSCALL 1 +#define CONFIG_X86_INTERNODE_CACHE_SHIFT 6 +#define CONFIG_ELF_CORE 1 +#define CONFIG_MCONSOLE 1 +#define CONFIG_MAGIC_SYSRQ 1 +#define CONFIG_DEFAULT_IOSCHED "cfq" +#define CONFIG_LEGACY_PTYS 1 +#define CONFIG_UNIX98_PTYS 1 +#define CONFIG_X86_USE_PPRO_CHECKSUM 1 +#define CONFIG_SOUND_OSS_CORE 1 +#define CONFIG_SSL_CHAN "pts" +#define CONFIG_BLOCK 1 +#define CONFIG_GENERIC_CLOCKEVENTS_BUILD 1 +#define CONFIG_GENERIC_CLOCKEVENTS_BROADCAST 1 +#define CONFIG_GENERIC_HWEIGHT 1 +#define CONFIG_IRQ_RELEASE_METHOD 1 +#define CONFIG_QUOTACTL 1 +#define CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE 0 +#define CONFIG_ENABLE_WARN_DEPRECATED 1 +#define CONFIG_WIRELESS 1 +#define CONFIG_UML_NET_TUNTAP 1 +#define CONFIG_KALLSYMS 1 +#define CONFIG_CPU_SUP_AMD 1 +#define CONFIG_SCSI_MOD 1 +#define CONFIG_KERNEL_STACK_ORDER 1 +#define CONFIG_FSNOTIFY 1 +#define CONFIG_SYSVIPC_SYSCTL 1 +#define CONFIG_FIRMWARE_IN_KERNEL 1 +#define CONFIG_NO_IOMEM 1 +#define CONFIG_PROC_SYSCTL 1 +#define CONFIG_PTY_CHAN 1 +#define CONFIG_TREE_RCU 1 +#define CONFIG_TTY_CHAN 1 +#define CONFIG_SHMEM 1 +#define CONFIG_X86_INTEL_USERCOPY 1 +#define CONFIG_INET_XFRM_MODE_TRANSPORT 1 +#define CONFIG_EPOLL 1 +#define CONFIG_UEVENT_HELPER_PATH "/sbin/hotplug" +#define CONFIG_INET_XFRM_MODE_TUNNEL 1 +#define CONFIG_FILE_LOCKING 1 +#define CONFIG_BLK_DEV_COW_COMMON 1 +#define CONFIG_DEBUG_KERNEL 1 +#define CONFIG_SOUND_MODULE 1 +#define CONFIG_QUOTA 1 +#define CONFIG_TMPFS 1 +#define CONFIG_GENERIC_TIME 1 +#define CONFIG_DUMMY_MODULE 1 +#define CONFIG_FUTEX 1 +#define CONFIG_EXPERIMENTAL 1 +#define CONFIG_VIRT_TO_BUS 1 +#define CONFIG_LOCALVERSION "" +#define CONFIG_INIT_ENV_ARG_LIMIT 128 +#define CONFIG_IOSCHED_DEADLINE 1 +#define CONFIG_SYSFS 1 +#define CONFIG_IOSCHED_NOOP 1 +#define CONFIG_HIGH_RES_TIMERS 1 +#define CONFIG_GENERIC_CLOCKEVENTS 1 +#define CONFIG_NO_HZ 1 +#define CONFIG_LOCKDEP_SUPPORT 1 +#define CONFIG_MSDOS_PARTITION 1 +#define CONFIG_GENERIC_FIND_FIRST_BIT 1 +#define CONFIG_HZ 1000 +#define CONFIG_INET_DIAG 1 +#define CONFIG_X86_MINIMUM_CPU_FAMILY 3 +#define CONFIG_TICK_ONESHOT 1 +#define CONFIG_BASE_FULL 1 +#define CONFIG_PREVENT_FIRMWARE_BUILD 1 +#define CONFIG_HOSTAUDIO_MODULE 1 +#define CONFIG_BLK_DEV_LOOP_MODULE 1 +#define CONFIG_CPU_SUP_CENTAUR 1 +#define CONFIG_GENERIC_CALIBRATE_DELAY 1 +#define CONFIG_FW_LOADER 1 +#define CONFIG_NULL_CHAN 1 +#define CONFIG_ISO9660_FS_MODULE 1 +#define CONFIG_PACKET 1 +#define CONFIG_DEBUG_BUGVERBOSE 1 +#define CONFIG_X86_WP_WORKS_OK 1 +#define CONFIG_3_LEVEL_PGTABLES 1 +#define CONFIG_PORT_CHAN 1 +#define CONFIG_INOTIFY_USER 1 +#define CONFIG_POSIX_MQUEUE 1 +#define CONFIG_JOLIET 1 +#define CONFIG_SELECT_MEMORY_MODEL 1 +#define CONFIG_RCU_CPU_STALL_DETECTOR 1 +#define CONFIG_AUTOFS_FS_MODULE 1 +#define CONFIG_UML_NET_SLIP 1 +#define CONFIG_INET_XFRM_MODE_BEET 1 +#define CONFIG_JBD 1 +#define CONFIG_MK8 1 +#define CONFIG_DEFAULT_TCP_CONG "cubic" +#define CONFIG_BSD_PROCESS_ACCT 1 +#define CONFIG_NLATTR 1 +#define CONFIG_UML_SOUND_MODULE 1 +#define CONFIG_HOSTFS 1 +#define CONFIG_PRINTK 1 +#define CONFIG_AIO 1 +#define CONFIG_DETECT_HUNG_TASK 1 +#define CONFIG_DEFAULT_SECURITY "" +#define CONFIG_IKCONFIG_PROC 1 +#define CONFIG_BUG 1 +#define CONFIG_CRYPTO_HW 1 +#define CONFIG_NAMESPACES 1 +#define CONFIG_NETWORK_FILESYSTEMS 1 +#define CONFIG_CRYPTO 1 +/* CONFIG_SYSCTL is not defined */ +#define CONFIG_MISC_FILESYSTEMS 1 +#define CONFIG_ZONE_DMA_FLAG 0 +#define CONFIG_RWSEM_XCHGADD_ALGORITHM 1 +#define CONFIG_RWSEM_GENERIC_SPINLOCK 1 +#define CONFIG_NET 1 +#define CONFIG_MODULE_UNLOAD 1 +#define CONFIG_STANDALONE 1 +#define CONFIG_KALLSYMS_EXTRA_PASS 1 +#define CONFIG_NETDEVICES 1 +#define CONFIG_INET_TCP_DIAG 1 +#define CONFIG_FRAME_POINTER 1 +#define CONFIG_PRINT_QUOTA_WARNING 1 +#define CONFIG_NLS 1 +#define CONFIG_CRYPTO_ALGAPI_MODULE 1 +#define CONFIG_UML 1 +#define CONFIG_UML_NET_ETHERTAP 1 +#define CONFIG_PPP_MODULE 1 +#define CONFIG_DEBUG_INFO 1 +#define CONFIG_SSL 1 +#define CONFIG_BASE_SMALL 0 +#define CONFIG_STDIO_CONSOLE 1 +#define CONFIG_BINFMT_ELF 1 +#define CONFIG_TUN_MODULE 1 +#define CONFIG_CON_ZERO_CHAN "fd:0,fd:1" +#define CONFIG_LEGACY_PTY_COUNT 32 +#define CONFIG_BITREVERSE 1 +#define CONFIG_LOG_BUF_SHIFT 14 +#define CONFIG_AUTOFS4_FS_MODULE 1 +#define CONFIG_CGROUPS 1 +#define CONFIG_CGROUP_SCHED 1 +#define CONFIG_CGROUP_CPUACCT 1 +#define CONFIG_FAIR_GROUP_SCHED 1 +#define CONFIG_SCHEDSTATS 1 +#define CONFIG_X86 1 +#define CONFIG_X86_CPUID 1 +#define CONFIG_X86_64 1 +#define CONFIG_X86_64_SMP 1 +/* CONFIG_TRACE_IRQFLAGS_SUPPORT is not set */ +#define CONFIG_HAVE_UNSTABLE_SCHED_CLOCK 1 +#define CONFIG_ARCH_HAS_CACHE_LINE_SIZE 1 +#define CONFIG_NODES_SHIFT 9 +#define CONFIG_NR_CPUS 32 +#define CONFIG_RT_MUTEXES 1 +#define CONFIG_PREEMPT_NONE 1 +#define CONFIG_DEBUG_PREEMPT 1 +#define CONFIG_DEBUG_LIST 1 +/*#define CONFIG_SPARSEMEM 1*/ +#define CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER 1 +#define CONFIG_SPARSEMEM_EXTREME 1 +#define CONFIG_SPARSEMEM_MANUAL 1 +#define CONFIG_SPARSEMEM_VMEMMAP 1 +#define CONFIG_SPARSEMEM_VMEMMAP_ENABLE 1 +#define CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK 1 +#define CONFIG_SCHED_SMT 1 +#define CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK 1 +#define CONFIG_SCHED_MC 1 +#define CONFIG_NUMA 1 +#define CONFIG_HOTPLUG_CPU 1 +#define CONFIG_STOP_MACHINE 1 +#define __enabled_CONFIG_IPV6 0 +#define __enabled_CONFIG_IPV6_MODULE 0 diff --git a/tools/linsched/include/generated/bounds.h b/tools/linsched/include/generated/bounds.h new file mode 100644 index 00000000000000..fb07f92c9c5567 --- /dev/null +++ b/tools/linsched/include/generated/bounds.h @@ -0,0 +1,13 @@ +#ifndef __LINUX_BOUNDS_H__ +#define __LINUX_BOUNDS_H__ +/* + * DO NOT MODIFY. + * + * This file was generated by Kbuild + * + */ + +#define NR_PAGEFLAGS 22 /* __NR_PAGEFLAGS # */ +#define MAX_NR_ZONES 4 /* __MAX_NR_ZONES # */ + +#endif diff --git a/tools/linsched/include/linux_sched_headers.h b/tools/linsched/include/linux_sched_headers.h new file mode 100644 index 00000000000000..2a164416cfac32 --- /dev/null +++ b/tools/linsched/include/linux_sched_headers.h @@ -0,0 +1,26 @@ +#ifndef __LINSCHED_LINUX_SCHED_HEADERS_H +#define __LINSCHED_LINUX_SCHED_HEADERS_H + +#ifdef _LINUX_SCHED_H +#error linux_sched_headers.h must be included before sched.h +#endif + +#define __sigset_t_defined +#define __defined_schedparam +#define __dev_t_defined +#define __timer_t_defined +#define __loff_t_defined +#define __blkcnt_t_defined +#define __int8_t_defined +#define __need_schedparam +#define _SYS_TYPES_H +#define _SCHED_H +#define _TIME_H +#include "../kernel/sched/sched.h" +#include <linux/cgroup.h> +#include <linux/sched.h> +#include <linux/stop_machine.h> +#include "nohz.h" +#undef abs + +#endif /* __LINSCHED_LINUX_SCHED_HEADERS_H */ diff --git a/tools/linsched/lib/sort.h b/tools/linsched/lib/sort.h new file mode 100644 index 00000000000000..6662434f895272 --- /dev/null +++ b/tools/linsched/lib/sort.h @@ -0,0 +1,208 @@ +#ifndef LINSCHED_LIB_SORT +#define LINSCHED_LIB_SORT + +#include <string.h> + +/* Quicksort implementation from glibc, adapted into a + * type-specialized version optimized for reasonably small structs. + * This cuts about 1/3 of the time off of load balance scoring over qsort(3). + */ + +/* The next 4 #defines implement a very fast in-line stack abstraction. */ +/* The stack needs log (total_elements) entries (we could even subtract + log(MAX_THRESH)). Since total_elements has type size_t, we get as + upper bound for log (total_elements): + bits per byte (CHAR_BIT) * sizeof(size_t). */ +#define QSORT_STACK_SIZE (8 * sizeof(size_t)) +#define QSORT_PUSH(low, high) ((void) ((top->lo = (low)), (top->hi = (high)), ++top)) +#define QSORT_POP(low, high) ((void) (--top, (low = top->lo), (high = top->hi))) +#define QSORT_STACK_NOT_EMPTY (stack < top) + + +/* Order size using quicksort. This implementation incorporates + four optimizations discussed in Sedgewick: + + 1. Non-recursive, using an explicit stack of pointer that store the + next array partition to sort. To save time, this maximum amount + of space required to store an array of SIZE_MAX is allocated on the + stack. Assuming a 32-bit (64 bit) integer for size_t, this needs + only 32 * sizeof(stack_node) == 256 bytes (for 64 bit: 1024 bytes). + Pretty cheap, actually. + + 2. Chose the pivot element using a median-of-three decision tree. + This reduces the probability of selecting a bad pivot value and + eliminates certain extraneous comparisons. + + 3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving + insertion sort to order the MAX_THRESH items within each partition. + This is a big win, since insertion sort is faster for small, mostly + sorted array segments. + + 4. The larger of the two sub-partitions is always pushed onto the + stack first, with the algorithm then concentrating on the + smaller partition. This *guarantees* no more than log (total_elems) + stack size is needed (actually O(1) in this case)! */ + + +/* Defines a function qsort_<name> that compares using the given function */ +#define define_specialized_qsort(name, type, compare) \ + static inline void _qsort_swap##name(type *a, type *b) \ + { \ + type temp = *a; \ + *a = *b; \ + *b = temp; \ + } \ + void qsort_##name(type *base_ptr, size_t total_elems) \ + { \ + static const int MAX_THRESH = 4; \ + typedef struct { \ + void *lo; \ + void *hi; \ + } stack_node; \ + \ + \ + if (total_elems == 0) \ + /* Avoid lossage with unsigned arithmetic below. */ \ + return; \ + \ + if (total_elems > MAX_THRESH) \ + { \ + type *lo = base_ptr; \ + type *hi = &lo[total_elems - 1]; \ + stack_node stack[QSORT_STACK_SIZE]; \ + stack_node *top = stack + 1; \ + \ + while (QSORT_STACK_NOT_EMPTY) \ + { \ + type *left_ptr; \ + type *right_ptr; \ + \ + /* Select median value from among LO, MID, and HI. Rearrange \ + LO and HI so the three values are sorted. This lowers the \ + probability of picking a pathological pivot value and \ + skips a comparison for both the LEFT_PTR and RIGHT_PTR in \ + the while loops. */ \ + \ + type *mid = lo + ((hi - lo) >> 1); \ + \ + if (compare(mid, lo) < 0) \ + _qsort_swap##name (mid, lo); \ + if (compare (hi, mid) < 0) \ + _qsort_swap##name (mid, hi); \ + else \ + goto jump_over; \ + if (compare ((void *) mid, (void *) lo) < 0) \ + _qsort_swap##name (mid, lo); \ + jump_over:; \ + \ + left_ptr = lo + 1; \ + right_ptr = hi - 1; \ + \ + /* Here's the famous ``collapse the walls'' section of quicksort. \ + Gotta like those tight inner loops! They are the main reason \ + that this algorithm runs much faster than others. */ \ + do \ + { \ + while (compare (left_ptr, mid) < 0) \ + left_ptr ++; \ + \ + while (compare (mid, right_ptr) < 0) \ + right_ptr --; \ + \ + if (left_ptr < right_ptr) \ + { \ + _qsort_swap##name (left_ptr, right_ptr); \ + if (mid == left_ptr) \ + mid = right_ptr; \ + else if (mid == right_ptr) \ + mid = left_ptr; \ + left_ptr ++; \ + right_ptr --; \ + } \ + else if (left_ptr == right_ptr) \ + { \ + left_ptr ++; \ + right_ptr --; \ + break; \ + } \ + } \ + while (left_ptr <= right_ptr); \ + \ + /* Set up pointers for next iteration. First determine whether \ + left and right partitions are below the threshold size. If so, \ + ignore one or both. Otherwise, push the larger partition's \ + bounds on the stack and continue sorting the smaller one. */ \ + \ + if ((right_ptr - lo) <= MAX_THRESH) \ + { \ + if ((hi - left_ptr) <= MAX_THRESH) \ + /* Ignore both small partitions. */ \ + QSORT_POP (lo, hi); \ + else \ + /* Ignore small left partition. */ \ + lo = left_ptr; \ + } \ + else if ((hi - left_ptr) <= MAX_THRESH) \ + /* Ignore small right partition. */ \ + hi = right_ptr; \ + else if ((right_ptr - lo) > (hi - left_ptr)) \ + { \ + /* Push larger left partition indices. */ \ + QSORT_PUSH (lo, right_ptr); \ + lo = left_ptr; \ + } \ + else \ + { \ + /* Push larger right partition indices. */ \ + QSORT_PUSH (left_ptr, hi); \ + hi = right_ptr; \ + } \ + } \ + } \ + \ + /* Once the BASE_PTR array is partially sorted by quicksort the rest \ + is completely sorted using insertion sort, since this is efficient \ + for partitions below MAX_THRESH size. BASE_PTR points to the beginning \ + of the array to sort, and END_PTR points at the very last element in \ + the array (*not* one beyond it!). */ \ + \ + { \ + type *const end_ptr = &base_ptr[(total_elems - 1)]; \ + type *tmp_ptr = base_ptr; \ + type *thresh = min(end_ptr, base_ptr + MAX_THRESH); \ + type *run_ptr; \ + \ + /* Find smallest element in first threshold and place it at the \ + array's beginning. This is the smallest array element, \ + and the operation speeds up insertion sort's inner loop. */ \ + \ + for (run_ptr = tmp_ptr + 1; run_ptr <= thresh; run_ptr ++) \ + if (compare (run_ptr, tmp_ptr) < 0) \ + tmp_ptr = run_ptr; \ + \ + if (tmp_ptr != base_ptr) \ + _qsort_swap##name (tmp_ptr, base_ptr); \ + \ + /* Insertion sort, running from left-hand-side up to right-hand-side. */ \ + \ + run_ptr = base_ptr + 1; \ + while ((run_ptr += 1) <= end_ptr) \ + { \ + tmp_ptr = run_ptr - 1; \ + while (compare(run_ptr, tmp_ptr) < 0) \ + tmp_ptr --; \ + \ + tmp_ptr ++; \ + if (tmp_ptr != run_ptr) \ + { \ + type temp = *run_ptr; \ + \ + memmove(tmp_ptr + 1, tmp_ptr, sizeof(type) * (run_ptr - tmp_ptr)); \ + *tmp_ptr = temp; \ + } \ + } \ + } \ + } + + +#endif diff --git a/tools/linsched/linsched.c b/tools/linsched/linsched.c new file mode 100644 index 00000000000000..095a2622203b48 --- /dev/null +++ b/tools/linsched/linsched.c @@ -0,0 +1,100 @@ +#include "linsched.h" +#include "nohz_tracking.h" +#include "load_balance_score.h" + +#include <stdio.h> +#include <getopt.h> +#include <stdlib.h> + +struct linsched_global_options linsched_global_options = {0}; + +static void print_global_usage(void) +{ + printf("Global options:\n"); + printf("\t\t --help_global_options: show this help\n"); + printf("\t\t --print_task_stats: print task runtime stats\n"); + printf("\t\t --print_cgroup_stats: print cgroup runtime stats\n"); + printf("\t\t --print_nohz_stats: print nohz residency information\n"); + printf("\t\t --print_average_imbalance: print average balance stats\n"); + printf("\t\t --dump_imbalance: print imbalance every step\n"); + printf("\t\t --dump_full_balance: print full load balance info" + "every step\n"); + printf("\n"); + exit(1); +} + +void linsched_process_global_options(int *argc, char **argv) +{ + int idx = -2, c, i; + struct linsched_global_options *opt = &linsched_global_options; + + struct option long_options[] = { + {"help_global_options", no_argument, NULL, 'V' }, + {"print_nohz_stats", no_argument, &opt->print_nohz, 1}, + {"print_task_stats", no_argument, &opt->print_tasks, 1}, + {"print_cgroup_stats", no_argument, &opt->print_cgroups, 1}, + {"print_average_imbalance", no_argument, &opt->print_avg_imb, 1}, + {"print_sched_stats", no_argument, &opt->print_sched_stats, 1}, + {"dump_imbalance", no_argument, &opt->dump_imbalance, 1}, + {"dump_full_balance", no_argument, &opt->dump_full_balance, 1}, + {0, 0, 0, 0} + }; + + opterr = 0; + while (1) { + c = getopt_long(*argc, argv, "-", long_options, &idx); + if (c == 'V') { + print_global_usage(); + } else if (c == 0) { + /* + * pull opt out of args so that it doesn't confuse + * other handlers or cause false negatives (e.g. + * invalid argument). + */ + for (i = --optind; i < *argc; i++) + argv[i] = argv[i+1]; + (*argc)--; + } else if (c == -1) + break; + } + + /* reset optind/opterr so that any other optarg handlers just 'work' */ + optind = 1; + opterr = 1; +} + +static void stat_header(const char *stat_name) { + printf("------ %s\n", stat_name); +} + +int linsched_test_main(int argc, char **argv); + +int main(int argc, char **argv) +{ + int ret; + + linsched_process_global_options(&argc, argv); + + ret = linsched_test_main(argc, argv); + + if (linsched_global_options.print_tasks) { + stat_header("task runtime"); + linsched_print_task_stats(); + } + if (linsched_global_options.print_cgroups) { + stat_header("group runtime"); + linsched_print_group_stats(); + } + if (linsched_global_options.print_sched_stats) { + stat_header("sched stats"); + linsched_show_schedstat(); + } + if (linsched_global_options.print_nohz) { + stat_header("nohz residency"); + print_nohz_residency(); + } + if (linsched_global_options.print_avg_imb) { + printf("average imbalance: %f\n", get_average_imbalance()); + } + return ret; +} diff --git a/tools/linsched/linsched.h b/tools/linsched/linsched.h new file mode 100644 index 00000000000000..89da71c086e0ab --- /dev/null +++ b/tools/linsched/linsched.h @@ -0,0 +1,408 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef LINSCHED_H +#define LINSCHED_H + +#include "linux_sched_headers.h" + +/* Linsched definitions and declarations. */ +#define LINSCHED_RAND_SEED 123456 +#define LINSCHED_MAX_TASKS 10000 +#define LINSCHED_MAX_GROUPS 100 +#define LINSCHED_DEFAULT_NR_CPUS 4 + +/* have we started the simulation */ +extern bool simulation_started; + +extern struct cgroup *root_cgroup; + +extern struct task_struct *__linsched_tasks[LINSCHED_MAX_TASKS]; +extern struct task_struct *stop_tasks[NR_CPUS]; + +struct linsched_cgroup { + struct cgroup cg; + void *temp; +}; + +extern struct linsched_cgroup __linsched_cgroups[LINSCHED_MAX_GROUPS]; + +extern u64 current_time; + +struct task_data { + void *data; + void (*init_task) (struct task_struct *, void *data); + void (*handle_task) (struct task_struct *, void *data); +}; + +struct stop_task { + cpu_stop_fn_t fxn; + void *arg; + + struct task_struct *p; + struct hrtimer timer; +}; + +struct sleep_run_data { + struct hrtimer timer; + struct task_struct *p; + u64 last_start; +}; + +struct sleep_run_task { + struct sleep_run_data sr_data; + unsigned int busy; /* ms to run */ + unsigned int sleep; /* ms to sleep */ +}; + +/* A generic data placeholder for tasks modelled using random dists. + */ +struct rnd_dist_task { + struct sleep_run_data sr_data; + unsigned int busy; + unsigned int sleep; + struct rand_dist *sleep_rdist, *busy_rdist; +}; + +struct perf_task { + struct sleep_run_data sr_data; + unsigned int busy; /* ms to run */ + unsigned int sleep; /* ms to sleep */ + char *filename; /* pid.rlog file */ + void *fp; /* fp to pid.rlog file */ +}; + +enum linsched_perf_event_type { + RUN, + SLEEP, + IOWAIT, +}; + +struct linsched_perf_event { + enum linsched_perf_event_type type; + unsigned long duration; +}; + +/* Used to specify the topology of the system. Not specifying a + * topology gives a flat topology of LINSCHED_DEFAULT_NR_CPUS CPUs, + * each with one core and no SMT */ +struct linsched_topology { + /* map from logical cpu to containing NUMA node */ + int node_map[NR_CPUS]; + /* map to containing physical CPU package */ + int coregroup_map[NR_CPUS]; + /* map from SMT logical cpu to containing core */ + int core_map[NR_CPUS]; + /* map from [node][node] to distance between them */ + int node_distances[MAX_NUMNODES][MAX_NUMNODES]; + int nr_cpus; +}; + +enum topologies { + UNIPROCESSOR, + DUAL_CPU, + DUAL_CPU_MC, + QUAD_CPU, + QUAD_CPU_MC, + QUAD_CPU_DUAL_SOCKET, + QUAD_CPU_QUAD_SOCKET, + HEX_CPU_DUAL_SOCKET_SMT, + MAX_TOPOLOGIES +}; + +#define TOPO_UNIPROCESSOR \ + { \ + .nr_cpus = 1, \ + .core_map = { \ + [0] = 0, \ + }, \ + .coregroup_map = { \ + [0] = 0, \ + }, \ + .node_map = { \ + [0] = 0, \ + }, \ + .node_distances = { \ + { 10 }, \ + }, \ + } + +#define TOPO_DUAL_CPU \ + { \ + .nr_cpus = 2, \ + .core_map = { \ + [0] = 0, \ + [1] = 1, \ + }, \ + .coregroup_map = { \ + [0] = 0, \ + [1] = 1, \ + }, \ + .node_map = { \ + [0 ... 1] = 0, \ + }, \ + .node_distances = { \ + { 10 }, \ + }, \ + } + +#define TOPO_DUAL_CPU_MC \ + { \ + .nr_cpus = 2, \ + .core_map = { \ + [0] = 0, \ + [1] = 1, \ + }, \ + .coregroup_map = { \ + [0 ... 1] = 0, \ + }, \ + .node_map = { \ + [0 ... 1] = 0, \ + }, \ + .node_distances = { \ + { 10 }, \ + }, \ + } + +#define TOPO_QUAD_CPU \ + { \ + .nr_cpus = 4, \ + .core_map = { \ + 0, 1, 2, 3, \ + }, \ + .coregroup_map = { \ + 0, 1, 2, 3, \ + }, \ + .node_map = { \ + [0 ... 3] = 0, \ + }, \ + .node_distances = { \ + { 10 }, \ + }, \ + } + +#define TOPO_QUAD_CPU_MC \ + { \ + .nr_cpus = 4, \ + .core_map = { \ + 0, 1, 2, 3, \ + }, \ + .coregroup_map = { \ + [0 ... 1] = 0, \ + [2 ... 3] = 1, \ + }, \ + .node_map = { \ + [0 ... 3] = 0, \ + }, \ + .node_distances = { \ + { 10 }, \ + }, \ + } + +#define TOPO_QUAD_CPU_DUAL_SOCKET \ + { \ + .nr_cpus = 8, \ + .core_map = { \ + 0, 1, 2, 3, \ + 4, 5, 6, 7, \ + }, \ + .coregroup_map = { \ + [0] = 0, \ + [1] = 1, \ + [2] = 2, \ + [3] = 3, \ + [4] = 0, \ + [5] = 1, \ + [6] = 2, \ + [7] = 3, \ + }, \ + .node_map = { \ + [0 ... 7] = 0, \ + }, \ + .node_distances = { \ + { 10 }, \ + }, \ + } + +#define TOPO_QUAD_CPU_QUAD_SOCKET \ + { \ + .nr_cpus = 16, \ + .core_map = { \ + 0, 1, 2, 3, \ + 4, 5, 6, 7, \ + 8, 9, 10, 11, \ + 12, 13, 14, 15, \ + }, \ + .coregroup_map = { \ + [0 ... 3] = 0, \ + [4 ... 7] = 1, \ + [8 ... 11] = 2, \ + [12 ... 15] = 3, \ + }, \ + .node_map = { \ + [0 ... 3] = 0, \ + [4 ... 7] = 1, \ + [8 ... 11] = 2, \ + [12 ... 15] = 3, \ + }, \ + .node_distances = { \ + { 10, 20, 20, 30 }, \ + { 20, 20, 10, 20 }, \ + { 20, 10, 20, 20 }, \ + { 30, 20, 20, 10 }, \ + }, \ + } + +#define TOPO_HEX_CPU_DUAL_SOCKET_SMT \ + { \ + .nr_cpus = 24, \ + .core_map = { \ + [0] = 0, \ + [1] = 1, \ + [2] = 2, \ + [3] = 3, \ + [4] = 4, \ + [5] = 5, \ + [6] = 6, \ + [7] = 7, \ + [8] = 8, \ + [9] = 9, \ + [10] = 10, \ + [11] = 11, \ + [12] = 0, \ + [13] = 1, \ + [14] = 2, \ + [15] = 3, \ + [16] = 4, \ + [17] = 5, \ + [18] = 6, \ + [19] = 7, \ + [20] = 8, \ + [21] = 9, \ + [22] = 10, \ + [23] = 11, \ + }, \ + .coregroup_map = { \ + [0 ... 5] = 0, \ + [6 ... 11] = 1, \ + [12 ... 17] = 0, \ + [18 ... 23] = 1, \ + }, \ + .node_map = { \ + [0 ... 5] = 0, \ + [6 ... 11] = 1, \ + [12 ... 17] = 0, \ + [18 ... 23] = 1, \ + }, \ + .node_distances = { \ + { 10, 20 }, \ + { 20, 10 }, \ + }, \ + } + +struct linsched_global_options { + int print_nohz; + int print_tasks; + int print_cgroups; + int print_avg_imb; + int print_sched_stats; + int dump_imbalance; + int dump_full_balance; +}; +extern struct linsched_global_options linsched_global_options; + +/* Declarations of system initialization (or "boot") function. */ +asmlinkage void __init start_kernel(void); + +/* Scheduler "system calls" that are used during task creation. */ +asmlinkage long sys_sched_setscheduler(pid_t pid, int policy, + struct sched_param __user *param); +asmlinkage long sys_nice(int increment); + +/* sched.c functions */ +struct task_group *cgroup_tg(struct cgroup *cgrp); +struct cpuacct *cgroup_ca(struct cgroup *cgrp); +struct cpuacct *task_ca(struct task_struct *tsk); +struct task_group *task_group(struct task_struct *p); + +/* cgroup functions */ +const char *cgroup_name(struct cgroup *cgrp); +struct cgroup *linsched_create_cgroup(struct cgroup *parent, char *path); +struct task_group *cgroup_tg(struct cgroup *cgrp); /* from sched.c */ +struct cpuacct *cgroup_ca(struct cgroup *cgrp); /* from sched.c */ +struct cpuacct *task_ca(struct task_struct *tsk); /* from sched.c */ + +static inline struct linsched_cgroup *linsched_cgroup(struct cgroup *cg) { + return container_of(cg, struct linsched_cgroup, cg); +} + +static inline struct linsched_cgroup *linsched_tg(struct task_group *tg) { + return container_of(tg->css.cgroup, struct linsched_cgroup, cg); +} + +/* linsched functions */ + +struct task_struct *linsched_get_task(int task_id); +struct task_data *linsched_create_sleep_run(int sleep, int busy); +struct task_struct *linsched_create_batch_task(struct task_data *, int niceval); +struct task_struct *linsched_create_RTfifo_task(struct task_data *, int prio); +struct task_struct *linsched_create_RTrr_task(struct task_data *, int prio); +struct task_struct *linsched_create_normal_task(struct task_data *td, int niceval); + +struct task_struct *linsched_raw_copy_process(void); +int linsched_show_schedstat(void); +void linsched_change_cpu(int cpu); +void linsched_trigger_cpu(int cpu); +void linsched_check_resched(void); +void linsched_init_cpus(struct linsched_topology *topo); +void linsched_init_hrtimer(void); +void linsched_init(struct linsched_topology *topo); +void linsched_default_callback(void); +void linsched_announce_callback(void); +void linsched_exit_callback(void); +void linsched_disable_migrations(void); +void linsched_enable_migrations(void); +int linsched_force_migration(struct task_struct *task, int dest_cpu, int migr); +int linsched_create_task_group(int parent); +int linsched_add_task_to_group(struct task_struct *p, struct cgroup *cgrp); +void linsched_set_task_group_shares(int groupid, unsigned long shares); +void linsched_yield(void); +void linsched_random_init(int seed); +unsigned long linsched_random(void); +void linsched_run_sim(int sim_ticks); +void linsched_sched_debug_show(void); +void linsched_print_task_stats(void); +void linsched_print_group_stats(void); + +void linsched_print_cpuacct_stats(int cpuacct_group_id); +void linsched_runtime_timer(struct task_struct *t, u64 runtime, void (*fn)(struct task_data *)); +void linsched_idled_set(int cpu, long idle_time, long busy_time); +struct task_data *linsched_create_rnd_dist_sleep_run(struct rand_dist *sleep_rdist, + struct rand_dist *busy_rdist); +u64 getticks(void); +int linsched_create_perf_tasks(char *dirpath); + +void linsched_set_printk_level(int level); + +void linsched_rcu_invoke(void); + +void linsched_online_cpu(int cpu); +void linsched_offline_cpu(int cpu); + +#endif /* LINSCHED_H */ diff --git a/tools/linsched/linsched.lds b/tools/linsched/linsched.lds new file mode 100644 index 00000000000000..3eb83217ff5169 --- /dev/null +++ b/tools/linsched/linsched.lds @@ -0,0 +1,23 @@ +SECTIONS { + +/* + * For use with ld -r, will put the .data..percpu* sections into .data + * with start/end symbols created for a second linking run with the normal + * linker script + */ + +jiffies = jiffies_64; + +.data : { + . = ALIGN(16); + __per_cpu_start_info = .; + *(.data..percpuinfo) + __per_cpu_end_info = .; + *(.data..percpuarrays) + __per_cpu_start = .; + *(.data..percpu) + __per_cpu_end = .; +} + + +} diff --git a/tools/linsched/linsched_rand.c b/tools/linsched/linsched_rand.c new file mode 100644 index 00000000000000..75c4d3e99020c4 --- /dev/null +++ b/tools/linsched/linsched_rand.c @@ -0,0 +1,326 @@ +/* Copyright 2011 Google Inc. All Rights Reserved. + * Author: asr@google.com (Abhishek Srivastava) + */ + +#include "linsched_rand.h" +#include <math.h> +#include <stdlib.h> + +/* seed the linsched_rand() + * XORing with MASK to allow seed to be 0 */ +int *linsched_init_rand(const unsigned int seed) +{ + unsigned int *state = malloc(sizeof(unsigned int)); + *state = seed ^ MASK; + return state; +} + +/* destroy() required after init() */ +void linsched_destroy_rand(unsigned int *state) +{ + if (state) + free(state); +} + +/* * Lehmer random number generator (ref. Knuth (AoCP) ) + * * call linsched_srand() before calling linsched_rand() + * * n = 2147483647 (Mersenne Prime) + * * g = 16807 */ +double linsched_rand(unsigned int *const state) +{ + unsigned int rand = (16807 * (*state)) % 2147483647; + *state = rand; + return rand / (double) 2147483647; +} + +/* return a random number from [low, high) + * low and high must be positive + * rand_state must be initialized by linsched_init_rand() */ +double linsched_rand_range(double low, double high, + unsigned int *rand_state) +{ + double rval = linsched_rand(rand_state); + return low + rval * (high - low); +} + +/* generates a gaussian deviate with given parameters + * (ref GSL's gsl_ran_gaussian) */ +double linsched_gen_gaussian_dist(struct rand_dist *rdist) +{ + + int mu = ((struct gaussian_dist *) rdist->dist)->mu; + int sigma = ((struct gaussian_dist *) rdist->dist)->sigma; + unsigned int *rand_state = + ((struct gaussian_dist *) rdist->dist)->rand_state; + + double x, y, r2; + + do { + x = -1 + 2 * linsched_rand(rand_state); + y = -1 + 2 * linsched_rand(rand_state); + + r2 = x * x + y * y; + } while (r2 > 1.0 || r2 == 0); + + return mu + sigma * y * sqrt(-2.0 * log(r2) / r2); +} + +/* takes the log of gamma(xx) + * (ref. Numerical Recipies in C : Pg 214 */ +double gammaln(const double xx) +{ + double x, y, tmp, ser; + static double cof[6] = + { 76.18009172947146, -86.50532032941677, 24.01409824083091, + -1.231739572450155, 0.1208650973866170e-2, + -0.5395239384953e-5 + }; + int j; + + y = x = xx; + tmp = x + 5.5; + tmp -= (x + 0.5) * log(tmp); + ser = 1.000000000190015; + + for (j = 0; j <= 5; j++) + ser += cof[j] / ++y; + return -tmp + log(2.5066282746310005 * ser / x); + +} + +/* generates a poisson distribution given mean mu + * (ref. Numerical Recipies in C : Pg 294 */ +double linsched_gen_poisson_dist(struct rand_dist *rdist) +{ + int mu = ((struct poisson_dist *) rdist->dist)->mu; + unsigned int *rand_state = + ((struct poisson_dist *) rdist->dist)->rand_state; + + double sq = 0.0, alxm = 0.0, g = 0.0, oldm = (-1.0); + double em, t, y; + + if (mu < 12.0) { + if (mu != oldm) { + oldm = mu; + g = exp(-mu); + } + em = -1; + t = 1.0; + do { + ++em; + t *= linsched_rand(rand_state); + } while (t > g); + + } else { + if (mu != oldm) { + oldm = mu; + sq = sqrt(2.0 * mu); + alxm = log(mu); + g = mu * alxm - gammaln(mu + 1.0); + } + do { + do { + y = tan(M_PI * linsched_rand(rand_state)); + em = sq * y + mu; + } while (em < 0.0); + em = floor(em); + t = 0.9 * (1.0 + y * y) * exp(em * alxm - + gammaln(em + 1.0) + - g); + } while (linsched_rand(rand_state) > t); + } + return em; +} + +/* generates an exponential distribution given mean mu + * (ref. Numerical Recipies in C : Pg 287 */ +double linsched_gen_exp_dist(struct rand_dist *rdist) +{ + double edev; + double mu = ((struct exp_dist *) rdist->dist)->mu; + + unsigned int *rand_state = + ((struct exp_dist *) rdist->dist)->rand_state; + + do { + edev = linsched_rand(rand_state); + } while (edev == 0.0); + + return -mu * log(edev); +} + +/* generates lognormal deviates using a std gaussian N(0,1) + * ref. wikipedia (http://en.wikipedia.org/wiki/Log-normal_distribution) */ +double linsched_gen_lognormal_dist(struct rand_dist *rdist) +{ + double lndev, gaussdev; + struct lognormal_dist *ldist = ((struct lognormal_dist *) rdist->dist); + double meanlog = ldist->meanlog; + double sdlog = ldist->sdlog; + struct rand_dist *gdist = ((struct rand_dist *) ldist->std_gauss_dist); + + gaussdev = linsched_gen_gaussian_dist(gdist); + lndev = exp(meanlog + gaussdev * sdlog); + return lndev; +} + +struct rand_dist *linsched_init_gaussian(const int mu, const int sigma, + const int seed) +{ + struct rand_dist *rdist = malloc(sizeof(struct rand_dist)); + struct gaussian_dist *gdist = malloc(sizeof(struct gaussian_dist)); + + gdist->mu = mu; + gdist->sigma = sigma; + gdist->rand_state = linsched_init_rand(seed); + rdist->type = GAUSSIAN; + rdist->gen_fn = linsched_gen_gaussian_dist; + rdist->dist = gdist; + return rdist; +} + +void linsched_destroy_gaussian(struct rand_dist *rdist) +{ + unsigned int *rand_state = + ((struct gaussian_dist *) rdist->dist)->rand_state; + + if (rdist) { + if (rdist->dist) { + linsched_destroy_rand(rand_state); + free(rdist->dist); + } + free(rdist); + } +} + +struct rand_dist *linsched_init_poisson(const int mu, const int seed) +{ + struct rand_dist *rdist = malloc(sizeof(struct rand_dist)); + struct poisson_dist *pdist = malloc(sizeof(struct poisson_dist)); + + pdist->mu = mu; + pdist->rand_state = linsched_init_rand(seed); + rdist->type = POISSON; + rdist->gen_fn = linsched_gen_poisson_dist; + rdist->dist = pdist; + return rdist; +} + +void linsched_destroy_poisson(struct rand_dist *rdist) +{ + + unsigned int *rand_state = + ((struct poisson_dist *) rdist->dist)->rand_state; + + if (rdist) { + if (rdist->dist) { + linsched_destroy_rand(rand_state); + free(rdist->dist); + } + free(rdist); + } +} + +struct rand_dist *linsched_init_exponential(const double mu, const int seed) +{ + struct rand_dist *rdist = malloc(sizeof(struct rand_dist)); + struct exp_dist *edist = malloc(sizeof(struct exp_dist)); + + edist->mu = mu; + edist->rand_state = linsched_init_rand(seed); + rdist->type = EXPONENTIAL; + rdist->gen_fn = linsched_gen_exp_dist; + rdist->dist = edist; + return rdist; +} + +void linsched_destroy_exponential(struct rand_dist *rdist) +{ + unsigned int *rand_state; + + if (rdist) { + if (rdist->dist) { + rand_state = + ((struct exp_dist *) rdist->dist)->rand_state; + linsched_destroy_rand(rand_state); + free(rdist->dist); + } + free(rdist); + } +} + +struct rand_dist *linsched_init_lognormal(const double meanlog, + const double sdlog, const int seed) +{ + struct rand_dist *rdist = malloc(sizeof(struct rand_dist)); + struct lognormal_dist *ldist = malloc(sizeof(struct lognormal_dist)); + + ldist->meanlog = meanlog; + ldist->sdlog = sdlog; + ldist->std_gauss_dist = linsched_init_gaussian(0, 1, seed); + rdist->type = LOGNORMAL; + rdist->gen_fn = linsched_gen_lognormal_dist; + rdist->dist = ldist; + return rdist; +} + +void linsched_destroy_lognormal(struct rand_dist *rdist) +{ + struct lognormal_dist *ldist = ((struct lognormal_dist *) rdist->dist); + struct rand_dist *gdist = ((struct rand_dist *) ldist->std_gauss_dist); + + if (rdist) { + if (rdist->dist) { + linsched_destroy_gaussian(gdist); + free(ldist); + } + free(rdist); + } + +} + +void linsched_destroy_dist(struct rand_dist *rdist) +{ + switch (rdist->type) { + case GAUSSIAN: + linsched_destroy_gaussian(rdist); + break; + case POISSON: + linsched_destroy_poisson(rdist); + break; + case EXPONENTIAL: + linsched_destroy_exponential(rdist); + break; + case LOGNORMAL: + linsched_destroy_lognormal(rdist); + break; + } +} + +struct rand_dist *linsched_copy_dist(const struct rand_dist *rdist, + unsigned int *rand_state) +{ + linsched_rand(rand_state); + switch (rdist->type) { + case GAUSSIAN: { + struct gaussian_dist *dist = rdist->dist; + return linsched_init_gaussian(dist->mu, dist->sigma, + *rand_state); + } + case POISSON: { + struct poisson_dist *dist = rdist->dist; + return linsched_init_poisson(dist->mu, *rand_state); + } + case EXPONENTIAL: { + struct exp_dist *dist = rdist->dist; + return linsched_init_exponential(dist->mu, *rand_state); + } + case LOGNORMAL: { + struct lognormal_dist *dist = rdist->dist; + return linsched_init_lognormal(dist->meanlog, dist->sdlog, + *rand_state); + } + default: + return NULL; + } +} diff --git a/tools/linsched/linsched_rand.h b/tools/linsched/linsched_rand.h new file mode 100644 index 00000000000000..577ba6299850e9 --- /dev/null +++ b/tools/linsched/linsched_rand.h @@ -0,0 +1,67 @@ +/* Copyright 2011 Google Inc. All Rights Reserved. + Author: asr@google.com (Abhishek Srivastava) */ + +#ifndef __LINSCHED_RAND_H +#define __LINSCHED_RAND_H + +#define MASK 123456789 + +enum RND_TYPE { + GAUSSIAN, + POISSON, + EXPONENTIAL, + LOGNORMAL, + MAX_RND_TYPE = LOGNORMAL, +}; + +struct rand_dist { + enum RND_TYPE type; + void *dist; + double (*gen_fn) (struct rand_dist * pdist); +}; + +struct gaussian_dist { + int mu, sigma; + unsigned int *rand_state; +}; + +struct poisson_dist { + int mu; + unsigned int *rand_state; +}; + +struct exp_dist { + int mu; + unsigned int *rand_state; +}; + +struct lognormal_dist { + double meanlog, sdlog; + struct rand_dist *std_gauss_dist; +}; + +int *linsched_init_rand(const unsigned int seed); +void linsched_destroy_rand(unsigned int *state); +double linsched_rand(unsigned int *const state); +double linsched_rand_range(double low, double high, + unsigned int *const rand_state); +double linsched_gen_gaussian_dist(struct rand_dist *rdist); +double gammaln(const double xx); +double linsched_gen_poisson_dist(struct rand_dist *rdist); +double linsched_gen_exp_dist(struct rand_dist *rdist); +double linsched_gen_lognormal_dist(struct rand_dist *rdist); +struct rand_dist *linsched_copy_dist(const struct rand_dist *rdist, + unsigned int *rand_state); +struct rand_dist *linsched_init_gaussian(const int mu, const int sigma, + const int seed); +void linsched_destroy_gaussian(struct rand_dist *rdist); +struct rand_dist *linsched_init_poisson(const int mu, const int seed); +void linsched_destroy_poisson(struct rand_dist *rdist); +struct rand_dist *linsched_init_exponential(const double mu, const int seed); +void linsched_destroy_exponential(struct rand_dist *rdist); +struct rand_dist *linsched_init_lognormal(const double meanlog, + const double sdlog, const int seed); +void linsched_destroy_lognormal(struct rand_dist *rdist); +void linsched_destroy_dist(struct rand_dist *rdist); + +#endif /* __LINSCHED_RAND_H */ diff --git a/tools/linsched/linsched_sim.c b/tools/linsched/linsched_sim.c new file mode 100644 index 00000000000000..17f213ebf48c88 --- /dev/null +++ b/tools/linsched/linsched_sim.c @@ -0,0 +1,406 @@ +#include "linsched.h" +#include "linsched_rand.h" +#include "linsched_sim.h" +#include "load_balance_score.h" +#include <stdio.h> +#include <malloc.h> +#include <assert.h> + +/* picks a random dist type */ +enum RND_TYPE pick_random_dist_type(unsigned int *rand_state) +{ + enum RND_TYPE type = linsched_rand_range(0, MAX_RND_TYPE, + rand_state); + return type; +} + +/* returns a gaussian dist with random parameters */ +struct rand_dist *pick_gaussian_dist(unsigned int *rand_state) +{ + struct rand_dist *rdist; + double mean = linsched_rand_range(MIN_GAUSSIAN_DIST_MEAN, + MAX_GAUSSIAN_DIST_MEAN, + rand_state); + double sd = linsched_rand_range(MIN_GAUSSIAN_DIST_SD, + MAX_GAUSSIAN_DIST_SD, + rand_state); + + rdist = linsched_init_gaussian(mean, sd, *rand_state); + return rdist; +} + +/* returns a poisson dist with random parameters */ +struct rand_dist *pick_poisson_dist(unsigned int *rand_state) +{ + struct rand_dist *rdist; + double mean = linsched_rand_range(MIN_POISSON_DIST_MEAN, + MAX_POISSON_DIST_MEAN, + rand_state); + + rdist = linsched_init_poisson(mean, *rand_state); + return rdist; +} + + +/* returns a exponential dist with random parameters */ +struct rand_dist *pick_exponential_dist(unsigned int *rand_state) +{ + struct rand_dist *rdist; + double mean = linsched_rand_range(MIN_EXPONENTIAL_DIST_MEAN, + MAX_EXPONENTIAL_DIST_MEAN, + rand_state); + + rdist = linsched_init_exponential(mean, *rand_state); + return rdist; +} + +/* returns a lognormal dist with random parameters */ +struct rand_dist *pick_lognormal_dist(unsigned int *rand_state) +{ + struct rand_dist *rdist; + double meanlog = linsched_rand_range(MIN_LOGNORMAL_DIST_MEANLOG, + MAX_LOGNORMAL_DIST_MEANLOG, + rand_state); + double sdlog = linsched_rand_range(MIN_LOGNORMAL_DIST_SDLOG, + MAX_LOGNORMAL_DIST_SDLOG, + rand_state); + + rdist = linsched_init_lognormal(meanlog, sdlog, *rand_state); + return rdist; +} + +/* use LOGNORMAL. */ +struct rand_dist *pick_random_run_dist(unsigned int *rand_state) +{ + return pick_lognormal_dist(rand_state); +} + +/* use either EXPONENTIAL or LOGNORMAL */ +struct rand_dist *pick_random_sleep_dist(unsigned int *rand_state) +{ + enum RND_TYPE type = pick_random_dist_type(rand_state); + + while (type != EXPONENTIAL && type != LOGNORMAL) + type = pick_random_dist_type(rand_state); + if (type == EXPONENTIAL) + return pick_exponential_dist(rand_state); + else + return pick_lognormal_dist(rand_state); +} + +int pick_n_tasks(unsigned int *rand_state) +{ + int n_tasks = linsched_rand_range(MIN_N_TASKS, + MAX_N_TASKS, rand_state); + return n_tasks; +} + +/* creates a task group (with the specified shares) and a random + * number of tasks having random run / sleep distributions. If + * sleep_type and busy_type are specified, the tasks will have + * distributions of those types, if they are MAX_RND_TYPE then they + * are picked randomly */ +struct linsched_tg_sim *linsched_create_tg_sim(int shares, + struct rand_dist *sleep_dist, + struct rand_dist *busy_dist, + unsigned int *rand_state, + struct cgroup *cgroup, + const struct cpumask *cpus) +{ + int i; + int n_tasks = pick_n_tasks(rand_state); + struct linsched_tg_sim *tgsim = malloc(sizeof(struct linsched_tg_sim)); + + assert(tgsim); + if (cgroup) + tgsim->cg = cgroup; + else + tgsim->cg = linsched_create_cgroup(root_cgroup, NULL); + + sched_group_set_shares(cgroup_tg(tgsim->cg), shares); + tgsim->n_tasks = n_tasks; + tgsim->tasks = malloc(sizeof(struct task_struct*) * n_tasks); + assert(tgsim->tasks); + + for (i = 0; i < n_tasks; i++) { + struct task_data *td; + + if (!sleep_dist) + sleep_dist = pick_random_sleep_dist(rand_state); + else + sleep_dist = linsched_copy_dist(sleep_dist, rand_state); + if (!busy_dist) + busy_dist = pick_random_run_dist(rand_state); + else + busy_dist = linsched_copy_dist(busy_dist, rand_state); + + td = linsched_create_rnd_dist_sleep_run(sleep_dist, busy_dist); + tgsim->tasks[i] = linsched_create_normal_task(td, 0); + set_cpus_allowed_ptr(tgsim->tasks[i], cpus); + linsched_add_task_to_group(tgsim->tasks[i], tgsim->cg); + } + + return tgsim; +} + +void linsched_free_task_td(struct task_struct *p) +{ + struct task_data *td = task_thread_info(p)->td; + if (!td) + return; + + if (td->data) { + struct rnd_dist_task *d = td->data; + linsched_destroy_dist(d->busy_rdist); + linsched_destroy_dist(d->sleep_rdist); + free(d); + } + free(td); +} + +void linsched_destroy_tg_sim(struct linsched_tg_sim *tgsim) +{ + int i; + + if (!tgsim) + return; + + assert(tgsim->tasks); + for (i=0;i < tgsim->n_tasks;i++) + linsched_free_task_td(tgsim->tasks[i]); + free(tgsim->tasks); + free(tgsim); +} + +static char *remove_prefix(char *s, char *prefix) +{ + size_t len = strlen(prefix); + if (strncmp(s, prefix, len)) + return NULL; + return s + len; +} + +static enum RND_TYPE parse_type(char **line_ptr) +{ + int i; + const static struct { + char *name; + enum RND_TYPE type; + } types[] = { { "GAUSSIAN ", GAUSSIAN }, + { "POISSON ", POISSON }, + { "EXPONENTIAL ", EXPONENTIAL }, + { "LOGNORMAL ", LOGNORMAL }}; + + for(i = 0; i < sizeof(types)/sizeof(types[0]); i++) { + char *rest = remove_prefix(*line_ptr, types[i].name); + if (rest) { + *line_ptr = rest; + return types[i].type; + } + } + return MAX_RND_TYPE; +} + +/* returns true if successful */ +static int parse_double(char **line_ptr, double *val) +{ + int len; + char *line = *line_ptr; + if (sscanf(line, "%lf%n", val, &len) >= 1 && + line[len] == ' ') { + *line_ptr += len + 1; + return 1; + } + return 0; +} + +static struct rand_dist *parse_distribution(char **line_ptr, unsigned int *rand_state) +{ + enum RND_TYPE type = parse_type(line_ptr); + double arg1, arg2; + char *line = *line_ptr; + + /* make sure we don't initialize everything with the same seed */ + linsched_rand(rand_state); + switch(type) { + case GAUSSIAN: + if (parse_double(&line, &arg1) && parse_double(&line, &arg2)) { + *line_ptr = line; + return linsched_init_gaussian(arg1, arg2, *rand_state); + } + return pick_gaussian_dist(rand_state); + case POISSON: + if (parse_double(&line, &arg1)) { + *line_ptr = line; + return linsched_init_poisson(arg1, *rand_state); + } + return pick_poisson_dist(rand_state); + case EXPONENTIAL: + if (parse_double(&line, &arg1)) { + *line_ptr = line; + return linsched_init_exponential(arg1, *rand_state); + } + return pick_exponential_dist(rand_state); + case LOGNORMAL: + if (parse_double(&line, &arg1) && parse_double(&line, &arg2)) { + *line_ptr = line; + return linsched_init_lognormal(arg1, arg2, *rand_state); + } + return pick_lognormal_dist(rand_state); + default: + return NULL; + } +} + +static struct cgroup *parse_fixed_cgroup(char **line_ptr) +{ + struct cgroup *res = NULL; + char *rest; + + if ((rest = remove_prefix(*line_ptr, "ROOT "))) { + res = root_cgroup; + } else if ((rest = remove_prefix(*line_ptr, "ONE_GROUP "))) { + res = linsched_create_cgroup(root_cgroup, "all_tasks"); + } + if (rest) + *line_ptr = rest; + return res; +} + +/* creates a linsched_sim object based on a shares file. + * The structure of tg-shares file is specified as: + * [ROOT |ONE_GROUP ]<N_TASK_GROUPS> + * [sleep dist ][run dist ]<SHARES_OF_TG1> + * [sleep dist ][run dist ]<SHARES_OF_TG2> + * ....... + * ....... + * [sleep dist ][run dist ]<SHARES_OF_TGN> + * Where a distribution is one of GUASSIAN, POISSON etc, with optional + * parameters + */ +struct linsched_sim *linsched_create_sim(char *tg_file, const struct cpumask *cpus, + unsigned int *rand_state) +{ + FILE *tg_filp; + char line[256]; + long shares; + int n_tsk_grps; + int i = 0; + struct linsched_sim *lsim = malloc(sizeof(struct linsched_sim)); + struct linsched_tg_sim **tg_sim_arr = NULL; + struct cgroup *group = NULL; + + if ((tg_filp = fopen(tg_file, "r")) != NULL) { + if (fgets(line, sizeof(line), tg_filp)) { + char *parsed_line = line; + group = parse_fixed_cgroup(&parsed_line); + n_tsk_grps = simple_strtoul(parsed_line, NULL, 0); + if (n_tsk_grps) + tg_sim_arr = malloc(n_tsk_grps * + sizeof(struct linsched_tg_sim *)); + } + if (!tg_sim_arr) + return NULL; + while (fgets(line, sizeof(line), tg_filp) && i < n_tsk_grps) { + struct rand_dist *sleep_dist, *run_dist; + char *parsed_line = line; + + sleep_dist = parse_distribution(&parsed_line, rand_state); + run_dist = parse_distribution(&parsed_line, rand_state); + shares = simple_strtoul(parsed_line, NULL, 0); + tg_sim_arr[i++] = + linsched_create_tg_sim(shares, sleep_dist, + run_dist, rand_state, + group, cpus); + } + lsim->n_task_grps = n_tsk_grps; + lsim->tg_sim_arr = tg_sim_arr; + fclose(tg_filp); + return lsim; + } + return NULL; +} + +void linsched_destroy_sim(struct linsched_sim *lsim) +{ + int i; + + if (!lsim) + return; + + + if (lsim->tg_sim_arr) { + for (i = 0; i < lsim->n_task_grps; i++) + if (lsim->tg_sim_arr[i]) + linsched_destroy_tg_sim(lsim->tg_sim_arr[i]); + free(lsim->tg_sim_arr); + } + free(lsim); +} + +void print_dist_params(struct rand_dist *rdist) +{ + enum RND_TYPE type = rdist->type; + struct lognormal_dist *ldist; + struct gaussian_dist *gdist; + struct poisson_dist *pdist; + struct exp_dist *edist; + + switch (type) { + case LOGNORMAL: + ldist = rdist->dist; + + fprintf(stdout, "LOGNORMAL: meanlog = %f, sdlog = %f", + ldist->meanlog, ldist->sdlog); + break; + case GAUSSIAN: + gdist = rdist->dist; + fprintf(stdout, "GAUSSIAN: mean = %d, sd = %d", + gdist->mu, gdist->sigma); + break; + case POISSON: + pdist = rdist->dist; + fprintf(stdout, "POISSON: mean = %d", pdist->mu); + break; + case EXPONENTIAL: + edist = rdist->dist; + fprintf(stdout, "EXPONENTIAL: mean = %d", edist->mu); + break; + } +} + + +void print_task_params(struct task_struct *p, struct cgroup *cgrp) +{ + struct task_data *td = task_thread_info(p)->td; + struct rnd_dist_task *rd = td->data; + int id = task_thread_info(rd->sr_data.p)->id; + char buf[128]; + + cgroup_path(cgrp, buf, 128); + fprintf(stdout, "\nCGroup = %s, Task Id = %d ", buf, id); + fprintf(stdout, "sleep_dist: "); + print_dist_params(rd->sleep_rdist); + fprintf(stdout, "\nCGroup = %s, Task Id = %d ", buf, id); + fprintf(stdout, "busy_dist : "); + print_dist_params(rd->busy_rdist); +} + +void print_report(struct linsched_sim *lsim) +{ + int i, j; + struct linsched_tg_sim *tgsim; + + linsched_print_task_stats(); + linsched_print_group_stats(); + + /* for each task in each task_group, print its run / sleep params */ + + for (i = 0; i < lsim->n_task_grps; i++) { + tgsim = lsim->tg_sim_arr[i]; + + for (j = 0; j < tgsim->n_tasks; j++) + print_task_params(tgsim->tasks[j], tgsim->cg); + } + fprintf(stdout, "\n"); +} diff --git a/tools/linsched/linsched_sim.h b/tools/linsched/linsched_sim.h new file mode 100644 index 00000000000000..3a3c0e307c639c --- /dev/null +++ b/tools/linsched/linsched_sim.h @@ -0,0 +1,55 @@ +/* Copyright 2011 Google Inc. All Rights Reserved. + Author: asr@google.com (Abhishek Srivastava) */ + +#ifndef __LINSCHED_SIM_H +#define __LINSCHED_SIM_H + +#include "linsched.h" + +#define MIN_N_TASKS 10 +#define MAX_N_TASKS 20 + +#define MIN_GAUSSIAN_DIST_MEAN 600000 +#define MAX_GAUSSIAN_DIST_MEAN 800000 +#define MIN_GAUSSIAN_DIST_SD 880000 +#define MAX_GAUSSIAN_DIST_SD 900000 + +#define MIN_POISSON_DIST_MEAN 600000 +#define MAX_POISSON_DIST_MEAN 800000 + +#define MIN_EXPONENTIAL_DIST_MEAN 600000 +#define MAX_EXPONENTIAL_DIST_MEAN 700000 + +#define MIN_LOGNORMAL_DIST_MEANLOG 11 +#define MAX_LOGNORMAL_DIST_MEANLOG 14 +#define MIN_LOGNORMAL_DIST_SDLOG 1 +#define MAX_LOGNORMAL_DIST_SDLOG 4 + +#define TOPO_ARGO "argo" +#define TOPO_IKARIA "ikaria" + +struct linsched_tg_sim { + int n_tasks; + struct cgroup *cg; + struct task_struct **tasks; +}; + +struct linsched_sim { + int n_task_grps; + struct linsched_tg_sim **tg_sim_arr; +}; + +struct linsched_tg_sim *linsched_create_tg_sim(int shares, + struct rand_dist *sleep_dist, + struct rand_dist *busy_dist, + unsigned int *rand_state, + struct cgroup *group, + const struct cpumask *cpus); +struct linsched_sim *linsched_create_sim(char *tg_file, const struct cpumask *cpus, + unsigned int *rand_state); +void linsched_destroy_rnd_sim_task(struct task_struct *p); +void linsched_destroy_tg_sim(struct linsched_tg_sim *tgsim); +void linsched_destroy_sim(struct linsched_sim *lsim); +void print_report(struct linsched_sim *lsim); + +#endif /* __LINSCHED_SIM_H */ diff --git a/tools/linsched/linux_linsched.c b/tools/linsched/linux_linsched.c new file mode 100644 index 00000000000000..ca07a73e31059a --- /dev/null +++ b/tools/linsched/linux_linsched.c @@ -0,0 +1,789 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * This file contains Linux variables and functions that have been "defined + * away" or exist here in a modified form to avoid including an entire Linux + * source file that might otherwise lead to a "cascade" of dependency issues. + * It also includes certain LinSched variables to which some Linux functions + * and definitions now map. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, ofalse + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "linsched.h" + +#include <stdlib.h> + +#include <linux/tick.h> +#include <linux/mm.h> +#include <linux/slab.h> +#include <linux/percpu_counter.h> +#include <linux/err.h> +#include <linux/dcache.h> +#include <string.h> +#include <malloc.h> +#include <errno.h> +#include <dirent.h> +#include <assert.h> + +#include "linsched_rand.h" +#include "load_balance_score.h" + +/* linsched variables and functions */ + +/* delaying simulation until run_sim() prevents initial fork balancing. */ +bool simulation_started = true; + +struct task_struct *__linsched_tasks[LINSCHED_MAX_TASKS]; +int curr_task_id; + +struct linsched_cgroup __linsched_cgroups[LINSCHED_MAX_GROUPS]; +int num_cgroups = 1, num_tasks = 1; +extern int max_threads; +int oops_in_progress; + +asmlinkage void __init start_kernel(void); +struct page linsched_page; +enum system_states system_state; +char __lock_text_start[] = ".", __lock_text_end[] = "."; +struct cgroup *root_cgroup = &__linsched_cgroups[0].cg; + +void linsched_init_root_cgroup(struct cgroup *root) +{ + char *root_path = "/"; + + root->dentry = malloc(sizeof(struct dentry)); + root->dentry->d_name.name = strdup(root_path); + root->dentry->d_name.len = strlen(root_path); + + root_cgroup->subsys[cpuacct_subsys_id] = cpuacct_subsys.create(NULL, + root_cgroup); +} + +void init_stop_tasks(void); + +void linsched_init(struct linsched_topology *topo) +{ + curr_task_id = 1; + linsched_init_cpus(topo); + + /* Change context to "boot" cpu and boot kernel. */ + linsched_change_cpu(0); + + sched_clock_stable = 1; + + /*TODO: set an appropriate limit*/ + max_threads = INT_MAX; + + system_state = SYSTEM_BOOTING; + start_kernel(); + system_state = SYSTEM_RUNNING; + + linsched_init_root_cgroup(root_cgroup); + linsched_init_hrtimer(); + + init_lb_info(); + init_stop_tasks(); +} + +void linsched_default_callback(void) +{ +} + +void linsched_exit_callback(void) +{ + do_exit(0); +} + +struct cfs_rq; +void linsched_announce_callback(void) +{ + printf("CPU %d / t = %u: Task 0x%d scheduled, Runtime %llu\n", + smp_processor_id(), (unsigned int)jiffies, + task_thread_info(current)->id, + current->se.sum_exec_runtime); +} + +void linsched_disable_migrations(void) +{ + int i; + + for (i = 1; i < num_tasks; i++) + set_cpus_allowed(__linsched_tasks[i], + cpumask_of_cpu(task_cpu(__linsched_tasks[i]))); +} + +void linsched_enable_migrations(void) +{ + int i; + + for (i = 1; i < num_tasks; i++) + set_cpus_allowed(__linsched_tasks[i], CPU_MASK_ALL); +} + +/* Force a migration of task to the dest_cpu. + * If migr is set, allow migrations after the forced migration... otherwise, + * do not allow them. (We need to disable migrations so that the forced + * migration takes place correctly.) + * Returns old cpu of task. + */ +int linsched_force_migration(struct task_struct *task, int dest_cpu, int migr) +{ + int old_cpu = task_cpu(task); + + linsched_disable_migrations(); + set_cpus_allowed(task, cpumask_of_cpu(dest_cpu)); + linsched_change_cpu(old_cpu); + schedule(); + linsched_change_cpu(dest_cpu); + schedule(); + scheduler_ipi(); + if (migr) + linsched_enable_migrations(); + + return old_cpu; +} + +/* Return the task in position task_id in the task array. + * No error checking, so be careful! + */ +struct task_struct *linsched_get_task(int task_id) +{ + return __linsched_tasks[task_id]; +} + +static struct task_struct *linsched_fork(struct task_data *td, int enqueue_start) +{ + struct task_struct *p; + + //p = linsched_raw_copy_process(); + p = find_task_by_vpid(do_fork(0, 0, NULL, 0, NULL, NULL)); + + task_thread_info(p)->td = td; + /* + * This is fine *only* because we don't care about mm + * TODO: Might have to fix this assumption + */ + p->mm = &init_mm; + p->active_mm = &init_mm; + + if (!enqueue_start) { + struct rq *rq = cpu_rq(task_cpu(p)); + + raw_spin_lock_irq(&rq->lock); + deactivate_task(rq, p, DEQUEUE_SLEEP); + p->on_rq = 0; + raw_spin_unlock_irq(&rq->lock); + } + + return p; +} + +static struct task_struct *__linsched_create_task(struct task_data *td) +{ + struct task_struct *newtask = linsched_fork(td, true); + + if (td->init_task) + td->init_task(newtask, td->data); + + /* allow task to run on any cpu. */ + set_cpus_allowed(newtask, CPU_MASK_ALL); + + linsched_check_resched(); + + return newtask; +} + +extern void linsched_check_idle_cpu(void); +void linsched_check_resched(void) +{ + if (!simulation_started) + return; + + while (need_resched()) { + /* + * Check if we need to exit nohz mode. + */ + linsched_check_idle_cpu(); + schedule(); + } +} + +void __linsched_set_task_id(struct task_struct *p, int id) +{ + task_thread_info(p)->id = id; + sprintf(p->comm, "%d", id); +} + +const char *cgroup_name(struct cgroup *cgrp) +{ + return cgrp->dentry->d_name.name; +} + +struct cgroup *linsched_create_cgroup(struct cgroup *parent, char *path) +{ + struct cgroup *child; + int id = num_cgroups++; + char buf[64]; + child = &__linsched_cgroups[id].cg; + + assert(num_cgroups < LINSCHED_MAX_GROUPS); + /* we have to set up the parent pointer before creating sub-systems */ + child->parent = parent; + child->subsys[cpu_cgroup_subsys_id] = cpu_cgroup_subsys.create(NULL, + child); + child->subsys[cpu_cgroup_subsys_id]->cgroup = child; + child->subsys[cpuacct_subsys_id] = cpuacct_subsys.create(NULL, + child); + child->subsys[cpuacct_subsys_id]->cgroup = child; + + if (!path) { + sprintf(buf, "cg%d", id); + path = buf; + } + + child->dentry = malloc(sizeof(struct dentry)); + child->dentry->d_name.name = strdup(path); + child->dentry->d_name.len = strlen(path); + + return child; +} + +int linsched_add_task_to_group(struct task_struct *p, struct cgroup *cgrp) +{ + struct task_group *tg = cgroup_tg(cgrp); + struct cpuacct *ca = cgroup_ca(cgrp); + + p->cgroups->subsys[cpu_cgroup_subsys_id] = &tg->css; + p->cgroups->subsys[cpuacct_subsys_id] = &ca->css; + sched_move_task(p); + + return 0; +} + +u64 task_exec_time(struct task_struct *p) +{ + return p->se.sum_exec_runtime; +} + +u64 group_exec_time(struct task_group *tg) +{ + int i; + u64 total = 0; + + /* this depends on schedstats, but works for the root cgroup */ + for_each_possible_cpu(i) + total += tg->cfs_rq[i]->exec_clock; + + return total; +} + +int show_schedstat(struct seq_file *seq, void *v); + +int linsched_show_schedstat(void) +{ + return show_schedstat(NULL, NULL); +} + +void linsched_print_task_stats(void) +{ + int i; + long total_time = 0; + for (i = 1; i < num_tasks; i++) { + struct task_struct *task = __linsched_tasks[i]; + printf + ("Task id = %d (%d), exec_time = %llu, run_delay = %llu, pcount = %lu\n", + task_pid_nr(task), i, task_exec_time(task), task->sched_info.run_delay, + task->sched_info.pcount); + + total_time += task_exec_time(task); + } + printf("Total exec_time = %ld\n", total_time); +} + +/* We could have used the cpuacct cgroup for this, but a lot of the code + * would have to be compiled out leading to a bunch of #ifdefs all over + * the place. The simple function below is all we need. + */ +void linsched_print_group_stats(void) +{ + char buf[128]; + int i; + for (i = 0; i < num_cgroups; i++) { + struct cgroup *cgrp = &__linsched_cgroups[i].cg; + cgroup_path(cgrp, buf, 128); + printf("CGroup = %s (%d), exec_time = %llu\n", + buf, i, group_exec_time(cgroup_tg(cgrp))); + } +} + +/* Create a normal task with the specified callback and + * nice value of niceval, which determines its priority. + */ +struct task_struct *linsched_create_normal_task(struct task_data *td, int niceval) +{ + struct sched_param params = {}; + struct task_struct *p; + int id = num_tasks++; + + assert(id < LINSCHED_MAX_TASKS); + + /* Create "normal" task and set its nice value. */ + p = __linsched_tasks[id] = __linsched_create_task(td); + __linsched_set_task_id(p, id); + + params.sched_priority = 0; + sched_setscheduler(p, SCHED_NORMAL, ¶ms); + set_user_nice(p, niceval); + + assert(current->cgroups->subsys[0]); + assert(p->cgroups->subsys[0]); + return p; +} + +/* Create a batch task with the specified callback and + * nice value of niceval, which determines its priority. + */ +struct task_struct *linsched_create_batch_task(struct task_data *td, int niceval) +{ + struct sched_param params = { }; + int id = num_tasks++; + struct task_struct *p; + + assert(id < LINSCHED_MAX_TASKS); + + /* Create "batch" task and set its nice value. */ + p = __linsched_tasks[id] = __linsched_create_task(td); + __linsched_set_task_id(p, id); + + params.sched_priority = 0; + sched_setscheduler(p, SCHED_BATCH, ¶ms); + set_user_nice(p, niceval); + + return p; +} + +/* Create a FIFO real-time task with the specified callback and priority. */ +struct task_struct *linsched_create_RTfifo_task(struct task_data *td, int prio) +{ + struct sched_param params = { }; + int id = num_tasks++; + struct task_struct *p; + + assert(id < LINSCHED_MAX_TASKS); + + /* Create FIFO real-time task and set its priority. */ + p = __linsched_tasks[id] = __linsched_create_task(td); + __linsched_set_task_id(p, id); + + params.sched_priority = prio; + sched_setscheduler(p, SCHED_FIFO, ¶ms); + + return p; +} + +/* Create a RR real-time task with the specified callback and priority. */ +struct task_struct *linsched_create_RTrr_task(struct task_data *td, int prio) +{ + struct sched_param params = { }; + int id = num_tasks++; + struct task_struct *p; + + assert(id < LINSCHED_MAX_TASKS); + + /* Create RR real-time task and set its priority. */ + p = __linsched_tasks[id] = __linsched_create_task(td); + + params.sched_priority = prio; + sched_setscheduler(p, SCHED_RR, ¶ms); + + return p; +} + +void linsched_yield(void) +{ + /* If the current task is not the idle task, yield. */ + if (current != idle_task(smp_processor_id())) + yield(); +} + +u64 getticks(void) +{ + u64 a, d; + asm volatile("lfence; rdtsc" : "=a" (a), "=d" (d)); + + return (a | (d << 32)); +} + +u64 rq_clock_delta(struct task_struct *p); +/* The standard task_data for a task which runs the busy/sleep setup */ +static enum hrtimer_restart wake_task(struct hrtimer *timer) +{ + struct sleep_run_data *d = + container_of(timer, struct sleep_run_data, timer); + wake_up_process(d->p); + return HRTIMER_NORESTART; +} + +static void sleep_run_init(struct sleep_run_data *d) +{ + d->last_start = 0; + hrtimer_init(&d->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + d->timer.function = wake_task; +} + +static void sleep_run_start(struct task_struct *p, void *data) +{ + struct sleep_run_data *d = data; + d->p = p; +} + +/* Go to sleep in the given state and schedule a wakeup in ns nanoseconds */ +static void sleep_run_sleep_for(struct sleep_run_data *d, int state, u64 ns) +{ + hrtimer_set_expires(&d->timer, ns_to_ktime(ns)); + hrtimer_start_expires(&d->timer, HRTIMER_MODE_REL); + + if(d->p) { + d->p->state = state; + schedule(); + } +} + +/* Start or continue a run for ns nanoseconds. Tries to schedule a + * timer to end the run at the exact correct time. Returns true when + * the run has been finished. */ +static int sleep_run_run_for(struct sleep_run_data *d, u64 ns) +{ + struct task_struct *p = d->p; + /* + * start at time 1 so that we can reserve 0 for "just started + * this run" + */ + s64 delta = 0, runtime = 1; + + if(p) { + runtime += task_exec_time(p); + if(p->on_rq) { + /* this isn't quite the "right" clock, but is the best + * we can do without calling into the scheduler to + * update rq->clock_task (which should be the same + * anyway in linsched land) */ + runtime += current_time - p->se.exec_start; + } + } + + if (!d->last_start) { + d->last_start = runtime; + } else { + delta = runtime - d->last_start; + } + + if (delta >= ns) { + d->last_start = 0; + return 1; + } + + hrtimer_set_expires(&d->timer, ns_to_ktime(ns - delta)); + hrtimer_start_expires(&d->timer, HRTIMER_MODE_REL); + return 0; +} + +/* @fp: valid ptr to rlog file + * extracts the next event from the rlog file*/ +struct linsched_perf_event perf_get_next_event(FILE *fp) +{ + struct linsched_perf_event pe = {}; + char *delim = ","; + char *event_type = NULL, *duration = NULL; + char line[256]; + + if (fp && !feof(fp)) { + if (fgets(line, sizeof(line), fp)) { + strtok(line, delim); + event_type = strtok(NULL, delim); + strtok(NULL, delim); + duration = strtok(NULL, delim); + } + if (event_type && duration) { + pe.duration = simple_strtol(duration, NULL, 0); + if (!strcasecmp("R", event_type)) + pe.type = RUN; + else if (!strcasecmp("S", event_type)) + pe.type = SLEEP; + else + pe.type = IOWAIT; + } + } + return pe; +} + +static void sleep_run_handle(struct task_struct *p, void *data) +{ + struct sleep_run_task *d = data; + if (sleep_run_run_for(&d->sr_data, d->busy * NSEC_PER_MSEC)) { + if(d->sleep) { + sleep_run_sleep_for(&d->sr_data, TASK_INTERRUPTIBLE, + d->sleep * NSEC_PER_MSEC); + } else { + sleep_run_run_for(&d->sr_data, d->busy * NSEC_PER_MSEC + ); + } + } +} + +struct task_data *linsched_create_sleep_run(int sleep, int busy) +{ + struct task_data *td = malloc(sizeof(struct task_data)); + struct sleep_run_task *d = malloc(sizeof(struct sleep_run_task)); + d->sleep = sleep; + d->busy = busy; + sleep_run_init(&d->sr_data); + td->data = d; + td->init_task = sleep_run_start; + td->handle_task = sleep_run_handle; + return td; +} + +void rcu_note_context_switch(int cpu) {} + +struct task_struct *find_task_by_vpid(pid_t vnr); +/*struct task_struct *find_task_by_vpid(pid_t vnr) +{ + struct task_struct *p; + + if (vnr >= LINSCHED_MAX_TASKS) + return NULL; + + p = __linsched_tasks[vnr]; + BUG_ON(p->pid != vnr); + + return p; +}*/ + +/* get the next sleep / busy values from the appropriate distribution */ +static void rnd_dist_sleep_run_handle(struct task_struct *p, void *data) +{ + struct rnd_dist_task *d = data; + struct rand_dist *sdist = d->sleep_rdist; + struct rand_dist *bdist = d->busy_rdist; + + if (sleep_run_run_for(&d->sr_data, d->busy)) { + d->sleep = sdist->gen_fn(sdist); + d->busy = bdist->gen_fn(bdist); + + /* in case sleep is 0, we should not lose our task */ + if (!d->sleep) + d->sleep = 1; + sleep_run_sleep_for(&d->sr_data, TASK_INTERRUPTIBLE, d->sleep); + } +} + +struct task_data *linsched_create_rnd_dist_sleep_run(struct rand_dist + *sleep_rdist, struct rand_dist + *busy_rdist) +{ + struct task_data *td = malloc(sizeof(struct task_data)); + struct rnd_dist_task *d = malloc(sizeof(struct rnd_dist_task)); + + d->sleep_rdist = sleep_rdist; + d->busy_rdist = busy_rdist; + + d->sleep = sleep_rdist->gen_fn(sleep_rdist); + d->busy = busy_rdist->gen_fn(busy_rdist); + sleep_run_init(&d->sr_data); + + td->data = d; + td->init_task = sleep_run_start; + td->handle_task = rnd_dist_sleep_run_handle; + return td; +} + +static void perf_task_handle(struct task_struct *p, void *data) +{ + struct perf_task *d = data; + if (sleep_run_run_for(&d->sr_data, d->busy)) { + struct linsched_perf_event pe = perf_get_next_event(d->fp); + if (pe.duration) { + if (pe.type == RUN) { + d->busy = pe.duration; + d->sleep = 0; + sleep_run_run_for(&d->sr_data, d->busy); + } else { + d->sleep = pe.duration; + d->busy = 0; + } + } else { + /* didn't find an event, sleep */ + d->sleep = UINT_MAX; + d->busy = 0; + } + if (d->sleep) { + int state; + if (pe.type == SLEEP) + state = TASK_INTERRUPTIBLE; /* sleep */ + else + state = TASK_UNINTERRUPTIBLE; /* iowait */ + sleep_run_sleep_for(&d->sr_data, state, d->sleep); + } + } +} + +struct task_data *linsched_create_perf_task(char *filename) +{ + struct task_data *td = malloc(sizeof(struct task_data)); + struct perf_task *d = malloc(sizeof(struct perf_task)); + + memset(d, 0, sizeof(*d)); + sleep_run_init(&d->sr_data); + + d->fp = fopen(filename, "r"); + if (d->fp) { + d->filename = filename; + perf_task_handle(NULL, d); + } else { + fprintf(stderr, "\nopening %s failed. Error : %s", + filename, strerror(errno)); + free(td); + free(d); + return NULL; + } + + td->data = d; + td->init_task = sleep_run_start; + td->handle_task = perf_task_handle; + return td; +} + +/* creates perf tasks for rlogs in directory + * @_dirpath: path to directory + * returns 0 on success, negative on failure + */ +int linsched_create_perf_tasks(char *_dirpath) +{ + DIR *dir; + struct dirent *de; + struct task_data *td; + char *dirpath = malloc(strlen(_dirpath) + 1); + char *filepath = malloc(strlen(dirpath) + NAME_MAX); + + strcpy(dirpath, _dirpath); + + /* check if directory name appended with '/' */ + if (_dirpath[strlen(_dirpath) - 1] != '/') + strcat(dirpath, "/"); + + dir = opendir(dirpath); + + if (dir) { + while ((de = readdir(dir))) { + filepath = strcpy(filepath, dirpath); + strcat(filepath, de->d_name); + if (strstr(de->d_name, ".rlog")) { + td = linsched_create_perf_task(filepath); + if (td) + linsched_create_normal_task(td, 0); + } + } + closedir(dir); + } else { + fprintf(stderr, "\nopening %s directory failed.", dirpath); + return -1; + } + + free(filepath); + free(dirpath); + return 0; +} + +struct task_struct *stop_tasks[NR_CPUS]; + +static void stop_task_handle(struct task_struct *p, void *data) +{ + struct stop_task *stop_task = data; + + if (stop_task->fxn) + stop_task->fxn(stop_task->arg); + else + BUG(); + + stop_task->fxn = NULL; + p->state = TASK_INTERRUPTIBLE; + schedule(); +} + +void sched_set_stop_task(int cpu, struct task_struct *stop); + +static enum hrtimer_restart wake_stop(struct hrtimer *timer) +{ + struct stop_task *d = container_of(timer, struct stop_task, timer); + wake_up_process(d->p); + return HRTIMER_NORESTART; +} + +struct task_struct *linsched_create_stop_task(int cpu) +{ + struct task_struct *p; + struct task_data *td = malloc(sizeof(struct task_data)); + struct stop_task *d = malloc(sizeof(struct stop_task)); + cpumask_t mask; + + memset(d, 0, sizeof(struct stop_task)); + td->data = d; + td->handle_task = stop_task_handle; + hrtimer_init(&d->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + p = linsched_fork(td, false); + d->timer.function = wake_stop; + d->p = p; + cpumask_clear(&mask); + cpumask_set_cpu(cpu, &mask); + set_cpus_allowed(p, mask); + sched_set_stop_task(cpu, p); + set_task_cpu(p, cpu); + p->state = TASK_INTERRUPTIBLE; + + return p; +} + +void init_stop_tasks(void) +{ + int cpu; + + for_each_possible_cpu(cpu) + stop_tasks[cpu] = linsched_create_stop_task(cpu); +} + +unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base) +{ + return strtoul(cp, endp, base); +} + +long simple_strtol(const char *cp, char **endp, unsigned int base) +{ + return strtol(cp, endp, base); +} + +int scnprintf(char *buf, size_t size, const char *fmt, ...) +{ + va_list args; + int i; + + va_start(args, fmt); + i = vsnprintf(buf, size, fmt, args); + va_end(args); + + return i; +} diff --git a/tools/linsched/linux_linsched.h b/tools/linsched/linux_linsched.h new file mode 100644 index 00000000000000..ed39a54d838e3e --- /dev/null +++ b/tools/linsched/linux_linsched.h @@ -0,0 +1,35 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef LINUX_LINSCHED_H +#define LINUX_LINSCHED_H + +/* Additional functions provided to kernel-land */ +#include <linux/kernel.h> + +void linsched_change_cpu(int cpu); +void *malloc(size_t size); +void free(void *p); + +#define linsched_alloc_thread_info(tsk) ((struct thread_info *) \ + malloc(sizeof(struct thread_info) + 1)) +#define linsched_alloc_task_struct() ((struct task_struct *) \ + malloc(sizeof(struct task_struct) + 1)) + +#endif /* LINUX_LINSCHED_H */ diff --git a/tools/linsched/load_balance_score.c b/tools/linsched/load_balance_score.c new file mode 100644 index 00000000000000..918208fb594131 --- /dev/null +++ b/tools/linsched/load_balance_score.c @@ -0,0 +1,359 @@ +/* Load balance scoring */ + +#include "test_lib.h" +#include "load_balance_score.h" +#include "lib/sort.h" +#include <stdio.h> +#include <malloc.h> +#include <math.h> + +/* stdlib.h conflicts with linux/sched.h unfortunately */ +void qsort(void *base, size_t nmemb, size_t size, + int(*compar)(const void *, const void *)); + +struct lb_group { + struct task_group *tg; + double h_weight; + double total_load; +}; +struct lb_task { + struct task_struct *p; + int cpus_allowed; + double h_weight; +}; + +struct lb_cpu { + int id; + double load; +}; + +typedef uintptr_t hash_t; + +struct hash_bucket { + hash_t key; + double value; +}; + +#define HASH_TABLE_SIZE 1023 +static struct hash_bucket hash_table[HASH_TABLE_SIZE]; + +static struct lb_task lb_tasks[LINSCHED_MAX_TASKS]; +static struct lb_group lb_groups[LINSCHED_MAX_GROUPS]; +static int n_lb_tasks; +static int n_lb_groups; + +static u64 last_time; +static u64 start_time; + +static double total_imbalance; + +static int cpu_load_compare(const struct lb_cpu *a, const struct lb_cpu *b); +static int task_compare(const struct lb_task *a, const struct lb_task *b); +define_specialized_qsort(tasks, struct lb_task, task_compare); +define_specialized_qsort(cpus, struct lb_cpu, cpu_load_compare); + +static void split_h_weight(struct lb_group *parent) +{ + struct task_group *ptg = parent->tg; + struct task_group *tg; + double mult = parent->h_weight / parent->total_load; + + list_for_each_entry(tg, &ptg->children, siblings) { + struct lb_group *g = linsched_tg(tg)->temp; + if (g) { + g->h_weight = tg->shares * mult; + split_h_weight(g); + } + } +} + +static void compute_lb_h_weight(void) +{ + int i; + + for(i = 0; i < n_lb_tasks; i++) { + struct task_struct *p = lb_tasks[i].p; + struct lb_group *g = linsched_tg(task_group(p))->temp; + g->total_load += p->se.load.weight; + } + + for(i = 0; i < n_lb_groups; i++) { + struct task_group *tg = lb_groups[i].tg; + struct lb_group *g; + if (!tg->parent) + continue; + g = linsched_tg(tg->parent)->temp; + g->total_load += tg->shares; + } + + lb_groups[0].h_weight = 1024; + + split_h_weight(&lb_groups[0]); + + for(i = 0; i < n_lb_tasks; i++) { + struct task_struct *p = lb_tasks[i].p; + struct lb_group *g = linsched_tg(task_group(p))->temp; + double mult = g->h_weight / g->total_load; + lb_tasks[i].h_weight = p->se.load.weight * mult; + } +} + + +#define num_compare(a, b) ((a) < (b) ? -1 : ((a) > (b) ? 1 : 0)) + +static int cpu_load_compare(const struct lb_cpu *a, const struct lb_cpu *b) +{ + return num_compare(a->load, b->load); +} + +/* sort lb_task by increasing cpus_allowed, decreasing weight */ +static int task_compare(const struct lb_task *a, const struct lb_task *b) +{ + int res; + res = num_compare(a->cpus_allowed, b->cpus_allowed); + if (!res) + res = -num_compare(a->h_weight, b->h_weight); + return res; +} + +static void simple_greedy_balance(struct lb_cpu *cpus, int nr_cpus) +{ + int i; + + qsort_tasks(lb_tasks, n_lb_tasks); + + for(i = 0; i < n_lb_tasks; i++) { + struct lb_cpu *j, *end; + for(j = cpus; j < cpus + nr_cpus; j++) { + if(cpumask_test_cpu(j->id, + &lb_tasks[i].p->cpus_allowed)) + break; + } + j->load += lb_tasks[i].h_weight; + + /* sort it into place */ + end = &cpus[nr_cpus - 1]; + for(; j < end && j->load > (j + 1)->load; j++) { + struct lb_cpu temp = *j; + *j = *(j + 1); + *(j + 1) = temp; + } + } +} + +static void actual_balance(struct lb_cpu *cpus, int nr_cpus) +{ + int i, cpu; + struct lb_cpu *cpu_map[NR_CPUS]; /* in case the online set is not 0-n */ + + for(i = 0; i < nr_cpus; i++) { + cpu_map[cpus[i].id] = &cpus[i]; + } + for(i = 0; i < n_lb_tasks; i++) { + cpu = task_cpu(lb_tasks[i].p); + cpu_map[cpu]->load += lb_tasks[i].h_weight; + } + qsort_cpus(cpus, nr_cpus); +} + +void init_lb_info(void) +{ + start_time = 0; + total_imbalance = 0; +} + +hash_t mixhash(hash_t hash, uintptr_t value) { + /* better hash functions could be used here, but this is + * empirically good enough and is noticeably faster */ + return hash * 29 + value; +} + +static hash_t setup_lb_info(void) +{ + int i, out, cpu; + struct task_struct *p; + extern int num_tasks, num_cgroups; /* defined in linux_linsched.c */ + hash_t hash = 0; + + out = 0; + for(i = 1; i < num_tasks; i++) { + int j; + p = __linsched_tasks[i]; + if (!p->se.on_rq) + continue; + lb_tasks[out].p = p; + lb_tasks[out].cpus_allowed = cpumask_weight(&p->cpus_allowed); + + hash = mixhash(hash, (uintptr_t)p); + hash = mixhash(hash, (uintptr_t)p->se.cfs_rq); + hash = mixhash(hash, p->se.load.weight); + + /* hash in cpus_allowed */ + for (j = 0; j < BITS_TO_LONGS(NR_CPUS); j++) { + hash = mixhash(hash, cpumask_bits(&p->cpus_allowed)[j]); + } + + out++; + } + n_lb_tasks = out; + out = 0; + for(i = 0; i < num_cgroups; i++) { + struct task_group *tg = cgroup_tg(&__linsched_cgroups[i].cg); + int on_rq = 0; + if (!tg) + continue; + if (tg != &root_task_group) { + for_each_online_cpu(cpu) { + if (tg->se[cpu]->on_rq) { + on_rq = 1; + break; + } + } + if (!on_rq) { + linsched_tg(tg)->temp = NULL; + continue; + } + } + lb_groups[out].tg = tg; + lb_groups[out].total_load = 0; + linsched_tg(tg)->temp = &lb_groups[out]; + hash = mixhash(hash, (uintptr_t)tg); + hash = mixhash(hash, tg->shares); + out++; + } + n_lb_groups = out; + return hash; +} + +static double compute_imbalance(void) +{ + int cpu, i = 0; + int nr_cpus = num_online_cpus(); + static struct lb_cpu greedy_cpus[NR_CPUS]; + static struct lb_cpu actual_cpus[NR_CPUS]; + double imbalance = 0; + + compute_lb_h_weight(); + + for_each_online_cpu(cpu) { + greedy_cpus[i].load = 0; + greedy_cpus[i].id = cpu; + actual_cpus[i].load = 0; + actual_cpus[i].id = cpu; + i++; + } + simple_greedy_balance(greedy_cpus, nr_cpus); + actual_balance(actual_cpus, nr_cpus); + if (actual_cpus[nr_cpus - 1].load - actual_cpus[0].load < + greedy_cpus[nr_cpus - 1].load - greedy_cpus[0].load) { + return NAN; + } + + for(i = 0; i < nr_cpus; i++) { + double delta = greedy_cpus[i].load - actual_cpus[i].load; + imbalance += delta * delta; + } + return imbalance; +} + +void compute_lb_info(void) +{ + double imbalance; + u64 old_time = last_time; + hash_t hash_key; + + last_time = current_time; + if (!start_time) { + start_time = current_time; + return; + } + + hash_key = setup_lb_info(); + + struct hash_bucket *b = &hash_table[hash_key % HASH_TABLE_SIZE]; + if (b->key == hash_key) { + imbalance = b->value; + } else { + imbalance = compute_imbalance(); + + b->key = hash_key; + b->value = imbalance; + } + + if (isnan(imbalance)) { + printf("actual balance is better than greedy balance at %llu\n", current_time); + return; + } + + total_imbalance += imbalance * (current_time - old_time); + + if (linsched_global_options.dump_imbalance) { + printf("imbalance at %llu: %f\n", + current_time, imbalance); + } + if (linsched_global_options.dump_full_balance) { + dump_lb_info(stdout); + } +} + +double get_average_imbalance(void) +{ + return total_imbalance / (current_time - start_time); +} + +void dump_lb_info(FILE *out) +{ + int i; + int cpu; + char path[128]; + + fprintf(out, "at %llu\n", current_time); + for(i = 0; i < LINSCHED_MAX_TASKS; i++) { + struct task_struct *p = __linsched_tasks[i]; + char mask[128]; + if (!p) + continue; + + cgroup_path(task_group(p)->css.cgroup, path, sizeof(path)); + cpumask_scnprintf(mask, sizeof(mask), &p->cpus_allowed); + fprintf(out, "task %d in %s w %lu cpu %d mask %s on_rq %d\n", i, + path, p->se.load.weight, task_cpu(p), + mask, p->se.on_rq); + } + for(i = 0; i < LINSCHED_MAX_GROUPS; i++) { + struct cgroup *cgroup = &__linsched_cgroups[i].cg; + struct task_group *tg = cgroup_tg(cgroup); + if (!tg) + continue; + cgroup_path(cgroup, path, sizeof(path)); + + fprintf(out, "group %s w %lu", path, tg->shares); + + if (tg->parent) { + fprintf(out, " percpu:"); + for_each_online_cpu(cpu) { + fprintf(out, " %lu", tg->se[cpu]->load.weight); + } + } + fprintf(out, "\n"); + + } + + for_each_online_cpu(cpu) { + struct rb_node *cur; + struct cfs_rq *cfs = root_task_group.cfs_rq[cpu]; + fprintf(out, "cpu %d %lu/%lu entities:", cpu, cfs->load.weight, cfs->nr_running); + + if (cfs->curr) + fprintf(out, " %lu", cfs->curr->load.weight); + + cur = cfs->rb_leftmost; + while(cur) { + fprintf(out, " %lu", rb_entry(cur, struct sched_entity, run_node)->load.weight); + cur = rb_next(cur); + } + fprintf(out, "\n"); + + } + fprintf(out, "\n"); +} diff --git a/tools/linsched/load_balance_score.h b/tools/linsched/load_balance_score.h new file mode 100644 index 00000000000000..ea64bbbfa5e025 --- /dev/null +++ b/tools/linsched/load_balance_score.h @@ -0,0 +1,11 @@ +#ifndef LOAD_BALANCE_SCORE_H +#define LOAD_BALANCE_SCORE_H + +#include <stdio.h> + +void init_lb_info(void); +void compute_lb_info(void); +double get_average_imbalance(void); +void dump_lb_info(FILE *out); + +#endif diff --git a/tools/linsched/nohz.h b/tools/linsched/nohz.h new file mode 100644 index 00000000000000..cbef5bf78822f9 --- /dev/null +++ b/tools/linsched/nohz.h @@ -0,0 +1,10 @@ +#ifndef __LINSCHED_HEADER_NOHZ +#define __LINSCHED_HEADER_NOHZ + +struct nohz { + cpumask_var_t idle_cpus_mask; + atomic_t nr_cpus; + unsigned long next_balance; +}; + +#endif diff --git a/tools/linsched/nohz_tracking.c b/tools/linsched/nohz_tracking.c new file mode 100644 index 00000000000000..9dc83f398bd3e1 --- /dev/null +++ b/tools/linsched/nohz_tracking.c @@ -0,0 +1,116 @@ +/* Tracking cpu nohz residency */ + +#include "linsched.h" +#include <stdio.h> + +#define MAX_DOMAINS 10 + +struct nohz_data { + u64 nohz_time; + u64 last_change; + int num_nohz_cpus; +}; + +/* + * nohz_data[cpu][0] is the data for the individual cpu, and then it + * goes up the sched_domain tree for 1.. + */ +static struct nohz_data nohz_data[NR_CPUS][MAX_DOMAINS]; +struct nohz; +extern struct nohz nohz; + +static void do_track_nohz_sd_residency(int cpu, int level, int nr_cpus, + int cpu_delta) +{ + struct nohz_data *data = &nohz_data[cpu][level]; + BUG_ON(level >= MAX_DOMAINS); + + if (data->num_nohz_cpus == nr_cpus) { + data->nohz_time += current_time - data->last_change; + } + data->last_change = current_time; + data->num_nohz_cpus += cpu_delta; +} + +void track_nohz_residency(int cpu) +{ + struct sched_domain *sd; + int cpu_delta; + int nohz_active = !cpu_online(cpu) || + !!cpumask_test_cpu(cpu, nohz.idle_cpus_mask); + int i = 1; + + cpu_delta = nohz_active - nohz_data[cpu][0].num_nohz_cpus; + do_track_nohz_sd_residency(cpu, 0, 1, cpu_delta); + + for_each_domain(cpu, sd) { + do_track_nohz_sd_residency(cpumask_first(sched_domain_span(sd)), + i, sd->span_weight, cpu_delta); + i++; + } +} + +static void print_cpu(int cpu) +{ + int i; + struct sched_domain *sd; + + track_nohz_residency(cpu); + printf("cpu%3d: %7.4f%% ", cpu, nohz_data[cpu][0].nohz_time * 100.0 / current_time); + i = 1; + for_each_domain(cpu, sd) { + if (cpu != cpumask_first(sched_domain_span(sd))) + break; + printf("%7.4f%% ", + nohz_data[cpu][i].nohz_time * 100.0 / current_time); + i++; + } + printf("\n"); +} + +void print_nohz_residency(void) +{ + struct cpumask to_print; + struct sched_domain *sd; + int cpu; + + printf("Time spent with tick disabled over %llu ms:\n", + current_time / NSEC_PER_MSEC); + cpumask_copy(&to_print, cpu_possible_mask); + cpu = cpumask_first(&to_print); + + /* headings */ + printf("%7s ", "level:"); + for_each_domain(cpu, sd) { + printf("%8s ", sd->name); + } + printf("%8s ", "SYSTEM"); + printf("\n"); + + /* print the nohz info in sched_domain hierarchy order */ + while(cpu < nr_cpu_ids) { + print_cpu(cpu); + cpumask_clear_cpu(cpu, &to_print); + + if (nr_cpu_ids == 1) + break; + + sd = cpu_rq(cpu)->sd; + while(sd) { + cpu = cpumask_first_and(sched_domain_span(sd), + &to_print); + if (cpu < nr_cpu_ids) + break; + sd = sd->parent; + } + } + + if (!cpumask_empty(&to_print)) { + printf("currently offline cpus:\n"); + while(!cpumask_empty(&to_print)) { + cpu = cpumask_first(&to_print); + print_cpu(cpu); + cpumask_clear_cpu(cpu, &to_print); + } + } +} diff --git a/tools/linsched/nohz_tracking.h b/tools/linsched/nohz_tracking.h new file mode 100644 index 00000000000000..d4df7426816a90 --- /dev/null +++ b/tools/linsched/nohz_tracking.h @@ -0,0 +1,8 @@ +#ifndef NOHZ_TRACKING_H +#define NOHZ_TRACKING_H + +/* called for each cpu, for each tick */ +void track_nohz_residency(int cpu); +void print_nohz_residency(void); + +#endif diff --git a/tools/linsched/numa.c b/tools/linsched/numa.c new file mode 100644 index 00000000000000..255ff51e2f7144 --- /dev/null +++ b/tools/linsched/numa.c @@ -0,0 +1,142 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * This file contains Linux variables and functions that have been "defined + * away" or exist here in a modified form to avoid including an entire Linux + * source file that might otherwise lead to a "cascade" of dependency issues. + * It also includes certain LinSched variables to which some Linux functions + * and definitions now map. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <linux/gfp.h> +#include <linux/hrtimer.h> + +#include "linsched.h" + +int nr_node_ids; +int nr_cpu_ids; +int cpu_to_node_map[NR_CPUS]; +cpumask_var_t node_to_cpumask_map[MAX_NUMNODES]; +static int cpu_to_coregroup_map[NR_CPUS]; +static cpumask_var_t cpu_coregroup_masks[NR_CPUS]; +static int cpu_to_core_map[NR_CPUS]; +cpumask_var_t cpu_core_masks[NR_CPUS]; +static int node_distances[MAX_NUMNODES][MAX_NUMNODES]; +int smp_num_siblings = 1; + +static struct hrtimer trigger_timer[NR_CPUS]; + +void linsched_init_cpus(struct linsched_topology *topo) +{ + int i; + + for (i = 0; i < NR_CPUS; i++) { + zalloc_cpumask_var(&node_to_cpumask_map[i], GFP_KERNEL); + zalloc_cpumask_var(&cpu_coregroup_masks[i], GFP_KERNEL); + zalloc_cpumask_var(&cpu_core_masks[i], GFP_KERNEL); + } + + if (topo) { + memcpy(cpu_to_node_map, topo->node_map, sizeof(topo->node_map)); + memcpy(cpu_to_coregroup_map, topo->coregroup_map, + sizeof(topo->coregroup_map)); + memcpy(cpu_to_core_map, topo->core_map, sizeof(topo->core_map)); + memcpy(node_distances, topo->node_distances, + sizeof(topo->node_distances)); + + nr_cpu_ids = topo->nr_cpus; + } else { + for (i = 0; i < LINSCHED_DEFAULT_NR_CPUS; i++) { + cpu_to_core_map[i] = i; + cpu_to_coregroup_map[i] = i; + } + /* all cpus go in node 0 */ + nr_cpu_ids = LINSCHED_DEFAULT_NR_CPUS; + } + + for (i = 0; i < nr_cpu_ids; i++) { + cpumask_set_cpu(i, node_to_cpumask_map[cpu_to_node_map[i]]); + cpumask_set_cpu(i, + cpu_coregroup_masks[cpu_to_coregroup_map[i]]); + cpumask_set_cpu(i, cpu_core_masks[cpu_to_core_map[i]]); + set_cpu_present(i, true); + set_cpu_possible(i, true); + } + nr_node_ids = cpu_to_node_map[nr_cpu_ids - 1] + 1; + smp_num_siblings = cpumask_weight(cpu_core_masks[0]); +} + +const struct cpumask *cpu_coregroup_mask(int cpu) +{ + return cpu_coregroup_masks[cpu_to_coregroup_map[cpu]]; +} + +const struct cpumask *get_cpu_core_mask(int cpu) +{ + return cpu_core_masks[cpu_to_core_map[cpu]]; +} + +static enum hrtimer_restart cpu_triggered(struct hrtimer *t) +{ + scheduler_ipi(); + return HRTIMER_NORESTART; +} + +void linsched_trigger_cpu(int cpu) +{ + int curr_cpu = smp_processor_id(); + linsched_change_cpu(cpu); + if (!hrtimer_active(&trigger_timer[cpu])) { + hrtimer_init(&trigger_timer[cpu], CLOCK_MONOTONIC, + HRTIMER_MODE_REL); + hrtimer_set_expires(&trigger_timer[cpu], ktime_set(0, 1)); + trigger_timer[cpu].function = cpu_triggered; + hrtimer_start(&trigger_timer[cpu], ktime_set(0, 1), + HRTIMER_MODE_REL); + } + /* + * Call the scheduler ipi when queueing up tasks on the wakelist + */ + scheduler_ipi(); + linsched_change_cpu(curr_cpu); +} + +int __node_distance(int a, int b) +{ + return node_distances[a][b]; +} + +void __init smp_init(void) +{ + unsigned int cpu; + + for_each_present_cpu(cpu) { + if (!cpu_online(cpu)) + cpu_up(cpu); + } +} + +void linsched_offline_cpu(int cpu) +{ + cpu_down(cpu); +} + +void linsched_online_cpu(int cpu) +{ + cpu_up(cpu); +} diff --git a/tools/linsched/sanity_check.c b/tools/linsched/sanity_check.c new file mode 100644 index 00000000000000..7ef04899358fe0 --- /dev/null +++ b/tools/linsched/sanity_check.c @@ -0,0 +1,115 @@ + +#include "linsched.h" +#include "sanity_check.h" + +static unsigned long check_cfs_rq(struct cfs_rq *cfs_rq); + +static unsigned long check_cfs_se(struct sched_entity *se, struct cfs_rq *cfs_rq) +{ + BUG_ON(se->cfs_rq != cfs_rq); + BUG_ON(!se->on_rq); + + if (se->my_q) { + unsigned long tasks = check_cfs_rq(se->my_q); + BUG_ON(!tasks); + return tasks; + } else { + struct task_struct *p = container_of(se, struct task_struct, se); + BUG_ON(cpu_rq(task_cpu(p)) != cfs_rq->rq); + BUG_ON(task_cpu(p) != debug_smp_processor_id()); + } + return 1; +} + +static unsigned long check_cfs_rq(struct cfs_rq *cfs_rq) +{ + unsigned long h_nr_running = 0; + unsigned long nr_running = 0; + u64 last_vruntime = 0; + unsigned long load = 0; + struct rb_node *node, *first; + + if (cfs_rq->curr) { + h_nr_running += check_cfs_se(cfs_rq->curr, cfs_rq); + nr_running++; + load += cfs_rq->curr->load.weight; + } + + first = cfs_rq->rb_leftmost; + BUG_ON(first != rb_first(&cfs_rq->tasks_timeline)); + + for(node = first; node; node = rb_next(node)) { + struct sched_entity *se; + se = rb_entry(node, struct sched_entity, run_node); + + BUG_ON(node != first && + (s64)(se->vruntime - last_vruntime) < 0); + last_vruntime = se->vruntime; + load += se->load.weight; + + h_nr_running += check_cfs_se(se, cfs_rq); + nr_running++; + } + BUG_ON(load != cfs_rq->load.weight); + BUG_ON(nr_running != cfs_rq->nr_running); + + return h_nr_running; +} + +static unsigned long check_rt_rq(struct rt_rq *rt_rq); + +static unsigned long check_rt_se(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq) +{ +#ifdef CONFIG_RT_GROUP_SCHED + BUG_ON(rt_se->parent != rt_rq); + if (rt_se->my_q) { + unsigned long tasks = check_rt_rq(rt_se->my_q);; + BUG_ON(!tasks); + return tasks; + } +#endif + return 1; +} + +static unsigned long check_rt_rq(struct rt_rq *rt_rq) +{ + unsigned long nr_running = 0; + unsigned long h_nr_running = 0; + struct rt_prio_array *array = &rt_rq->active; + int idx = -1; + + while((idx = find_next_bit(array->bitmap, MAX_RT_PRIO, idx+1) < + MAX_RT_PRIO)) { + struct sched_rt_entity *rt_se; + list_for_each_entry(rt_se, &array->queue[idx], run_list) { + h_nr_running += check_rt_se(rt_se, rt_rq); + nr_running++; + } + } + + BUG_ON(rt_rq->rt_nr_running != nr_running); + return h_nr_running; +} + +static void check_rq(struct rq *rq) +{ + unsigned long nr_running = 0; + /* by sched_class, in order */ + if (rq->stop->on_rq) /* stop_sched_class */ + nr_running++; + nr_running += check_rt_rq(&rq->rt); /* rt_sched_class */ + nr_running += check_cfs_rq(&rq->cfs); /* fair_sched_class */ + + /* idle doesn't contribute to nr_running, so it isn't here */ + BUG_ON(nr_running != rq->nr_running); +} + +void run_sanity_check(void) +{ + /* + * only bother checking one cpu at a time, any other cpus + * affected by the current tick will get checked whenever they + * run, which will likely be soon enough + */ + check_rq(cpu_rq(debug_smp_processor_id())); +} diff --git a/tools/linsched/sanity_check.h b/tools/linsched/sanity_check.h new file mode 100644 index 00000000000000..59b7e5c354cbfb --- /dev/null +++ b/tools/linsched/sanity_check.h @@ -0,0 +1,6 @@ +#ifndef SANITY_CHECK_H +#define SANITY_CHECK_H + +void run_sanity_check(void); + +#endif diff --git a/tools/linsched/stubs.c b/tools/linsched/stubs.c new file mode 100644 index 00000000000000..50680ea19e9092 --- /dev/null +++ b/tools/linsched/stubs.c @@ -0,0 +1,257 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * This file contains Linux variables and functions that have been "defined + * away" or exist here in a modified form to avoid including an entire Linux + * source file that might otherwise lead to a "cascade" of dependency issues. + * It also includes certain LinSched variables to which some Linux functions + * and definitions now map. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <linux/gfp.h> +#include <linux/mm.h> +#include <linux/module.h> +#include <linux/sched.h> +#include <linux/init.h> +#include <linux/init_task.h> +#include <linux/fs.h> +#include <linux/mqueue.h> +#include <linux/personality.h> +#include <linux/fdtable.h> +#include <linux/fs_struct.h> + +#include <asm/uaccess.h> +#include <asm/pgtable.h> + +#include <malloc.h> +void abort(void); + +int __linsched_curr_cpu = 0; +struct group_info init_groups = {.usage = ATOMIC_INIT(2) }; + +DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task; + +struct user_namespace init_user_ns = { + .kref = { + .refcount = ATOMIC_INIT(3), + }, + .creator = &root_user, +}; + +struct percpu_counter vm_committed_as; + +/* needs correct initialization depending on core speeds */ +unsigned int cpu_khz; +struct task_struct *kthreadd_task; + +struct nsproxy init_nsproxy; +struct user_struct root_user; +struct exec_domain default_exec_domain; +struct fs_struct init_fs; +struct files_struct init_files; + +static int printk_level = 5; /* only show KERN_NOTICE and up */ + +int tsk_fork_get_node(struct task_struct *tsk) +{ + return numa_node_id(); +} + +void timerfd_clock_was_set(void) {} + +long do_no_restart_syscall(struct restart_block *param) +{ + return -EINTR; +} + +int security_task_setnice(struct task_struct *p, int nice) +{ + return 0; +} + +int __printk_ratelimit(const char *func) +{ + return 0; +} + +void enter_idle(void) +{ +} + +void __exit_idle(void) +{ +} + +void exit_idle(void) +{ +} + +void linsched_set_printk_level(int level) +{ + printk_level = level; +} + +asmlinkage int printk(const char *fmt, ...) +{ + va_list args; + int log_level = 5; /* default to KERN_NOTICE */ + + /* very basic log_prefix handling */ + if (fmt[0] == '<' && (fmt[1] >= '0' && fmt[1] <= '9') && + fmt[2] == '>') { + log_level = fmt[1] - '0'; + } + if (log_level > printk_level) + return 0; + + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); + + return 0; +} + +void panic(const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); + puts(""); + abort(); +} + +void dump_stack(void) +{ +} + +struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, + unsigned long *flags) +{ + return tsk->sighand; +} + +void linsched_change_cpu(int cpu) +{ + __linsched_curr_cpu = cpu; +} + +unsigned int debug_smp_processor_id(void) +{ + return __linsched_curr_cpu; +} + +bool capable(int cap) +{ + return 1; +} + +/* These functions do not copy to and from user space anymore, so + * they are just memory copy functions now. + */ +__must_check unsigned long +_copy_from_user(void *to, const void __user * from, unsigned n) +{ + memcpy(to, from, n); + return 0; +} + +__must_check unsigned long +_copy_to_user(void __user *to, const void *from, unsigned n) +{ + memcpy(to, from, n); + return 0; +} + +void copy_from_user_overflow(void) +{ +} + +void user_disable_single_step(struct task_struct *child) +{ +} + +void warn_slowpath_null(const char *file, int line) +{ + printf("WARNING: at %s:%d\n", file, line); +} + +void warn_slowpath_fmt(const char *file, int line, const char *fmt, ...) +{ + va_list list; + warn_slowpath_null(file, line); + va_start(list, fmt); + vprintf(fmt, list); + va_end(list); + puts(""); +} + +struct dentry *debugfs_create_file(const char *name, mode_t mode, + struct dentry *parent, void *data, + const struct file_operations *fops) +{ + return NULL; +} + +ssize_t seq_read(struct file *file, char *buf, size_t size, loff_t *ppos) +{ + return 0; +} + +loff_t seq_lseek(struct file *file, loff_t offset, int origin) +{ + return 0; +} + +int single_release(struct inode *inode, struct file *file) +{ + return 0; +} + +int seq_printf(struct seq_file *m, const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vprintf(fmt, args); + va_end(args); + + return 0; +} + +int seq_puts(struct seq_file *m, const char *s) +{ + puts(s); + + return 0; +} + +int single_open(struct file *file, int (*show)(struct seq_file *, void *), + void *data) +{ + return 0; +} + +void kprobe_flush_task(struct task_struct *tk) +{ +} + +void print_modules(void) +{ +} diff --git a/tools/linsched/stubs/sched.c b/tools/linsched/stubs/sched.c new file mode 100644 index 00000000000000..a957f905bb9f6d --- /dev/null +++ b/tools/linsched/stubs/sched.c @@ -0,0 +1,198 @@ +#include "linsched.h" +#include <assert.h> + +/* for in_sched_functions() */ +char __sched_text_start[1]; +char __sched_text_end[1]; + +static struct rcu_head *rcu_head; +static struct rcu_head **rcu_curtail = &rcu_head; +/* 'rcu' */ +void call_rcu_sched(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) +{ + head->func = func; + head->next = NULL; + + *rcu_curtail = head; + rcu_curtail = &head->next; +} + +void linsched_rcu_invoke(void) +{ + while(rcu_head) { + struct rcu_head *next = rcu_head->next; + rcu_head->func(rcu_head); + rcu_head = next; + } +} + +/* kernel/workqueue.c */ +void wq_worker_waking_up(struct task_struct *task, unsigned int cpu) {} + +struct task_struct *wq_worker_sleeping(struct task_struct *task, + unsigned int cpu) +{ + /* should be unused */ + assert(0); + + return NULL; +} + +/* posix-timers.c */ +int __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) +{ + /* should be unused */ + assert(0); + + return 0; +} + +struct k_itimer; +int posix_timer_event(struct k_itimer *timr, int si_private) +{ + /* should be unused */ + assert(0); + + return 0; +} + +struct k_clock; +void posix_timers_register_clock(const clockid_t clock_id, + struct k_clock *new_clock) +{ + /* should be unused */ + assert(0); +} + +/* kernel/smp.c */ +void __smp_call_function_single(int cpu, struct call_single_data *data, + int wait) +{ + int this_cpu = smp_processor_id(); + unsigned long flags; + + if (cpu != this_cpu) + linsched_change_cpu(cpu); + + local_irq_save(flags); + data->func(data->info); + local_irq_restore(flags); + + if (cpu != this_cpu) + linsched_change_cpu(this_cpu); +} + + +void wake_up_stop_task(int cpu, cpu_stop_fn_t fxn, void *data); + +/* kernel/stop_machine.c */ +void linsched_current_handler(void); + +int stop_one_cpu(unsigned int cpu, cpu_stop_fn_t fxn, void *arg) +{ + struct task_struct *stop = stop_tasks[cpu]; + int this_cpu = smp_processor_id(), ret; + + linsched_change_cpu(cpu); + wake_up_process(stop); + /* switch to stop */ + schedule(); + BUG_ON(current != stop); + ret = fxn(arg); + /* switch back */ + stop->state = TASK_INTERRUPTIBLE; + schedule(); + + /* let whoever followed the stop task re-program (if needed) */ + linsched_current_handler(); + BUG_ON(current == stop); + linsched_change_cpu(this_cpu); + + return ret; +} + +void stop_one_cpu_nowait(unsigned int cpu, cpu_stop_fn_t fxn, void *arg, + struct cpu_stop_work *work_buf) +{ + struct task_struct *stop = stop_tasks[cpu]; + struct stop_task *stop_task = task_thread_info(stop)->td->data; + int this_cpu = smp_processor_id(); + + /* + * catch a data race on simultaneous calls to stop_one_cpu_nowait, if + * this ends up happening we'd need to support a proper queue here. + */ + BUG_ON(stop_task->fxn); + stop_task->fxn = fxn; + stop_task->arg = arg; + + /* + * in the nowait case we actually go through a schedule to make sure + * that our cpu has a change to drop its rq->locks since they may be + * needed. + */ + linsched_change_cpu(cpu); + hrtimer_set_expires(&stop_task->timer, ns_to_ktime(1)); + hrtimer_start_expires(&stop_task->timer, HRTIMER_MODE_REL); + linsched_change_cpu(this_cpu); +} + +int __stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus) +{ + /* technically we should bounce every cpu, but don't bother */ + return stop_one_cpu(cpumask_first(cpus), fn, data); +} + +int stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus) +{ + int ret; + + /* No CPUs can come up or down during this. */ + get_online_cpus(); + ret = __stop_machine(fn, data, cpus); + put_online_cpus(); + return ret; +} + +/* the below are unfortunately currently static so we re-define them */ +__attribute__((weak)) struct task_group *cgroup_tg(struct cgroup *cgrp) +{ + return container_of(cgroup_subsys_state(cgrp, cpu_cgroup_subsys_id), + struct task_group, css); +} + +void __sched preempt_schedule(void) +{ +}; + +void fire_sched_out_preempt_notifiers(struct task_struct *curr, + struct task_struct *next) +{ +} + +void fire_sched_in_preempt_notifiers(struct task_struct *curr) +{ +} + +int security_task_getscheduler(struct task_struct *p, + int policy, struct sched_param *lp) +{ + return 0; +} + +int security_task_setscheduler(struct task_struct *p, + int policy, struct sched_param *lp) +{ + return 0; +} + +int cap_task_setnice(struct task_struct *p, int nice) +{ + return 1; +} + +int cap_task_setscheduler(struct task_struct *p, int policy, + struct sched_param *lp) +{ + return 1; +} diff --git a/tools/linsched/test_lib.c b/tools/linsched/test_lib.c new file mode 100644 index 00000000000000..032d2b0310e171 --- /dev/null +++ b/tools/linsched/test_lib.c @@ -0,0 +1,226 @@ +/* Test library for the Linux Scheduler Simulator + * + * Basic assertions about tasks, ability to expect test failures. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "linsched.h" +#include "test_lib.h" +#include <stdio.h> +#include <stdlib.h> + +static long test_duration; +static const char *test_name; + +/* Set to: + 0 if we expect the next test to pass + 1 if we expect the next test to fail + -1 if we are in the middle of an aggregate test which we expect to fail +*/ +int __expect_failure; +/* The number of expected failures which have occurred */ +static int expected_failures; + +#define NSEC(ms) ((ms) * (u64)NSEC_PER_MSEC) + +/* check that max(0, expect - delta) <= v <= expect + delta */ +int check_delta(u64 v, u64 expect, u64 delta) +{ + if (delta < expect) { + if (v + delta < expect) { + return 0; + } + } + return v <= expect + delta; +} + +/* Given the pass/failure status of the most recent test, return true + * if this is a reason to print a message and abort */ +int check_unexpected(int condition) +{ + if (__expect_failure == -1) { + if (condition) { + expected_failures++; + } + return 0; + } + if (__expect_failure) { + if (condition) { + expected_failures++; + __expect_failure = 0; + } + return !condition; + } else { + return condition; + } +} + +struct task_struct *create_task(unsigned long mask, int sleep, int run) +{ + struct cpumask affinity; + struct task_struct *p; + + cpumask_clear(&affinity); + memcpy(&affinity, &mask, sizeof(mask)); + p = linsched_create_normal_task(linsched_create_sleep_run(sleep, run), + 0); + set_cpus_allowed(p, affinity); + + return p; +} + +void create_tasks(unsigned int count, unsigned long mask, int sleep, int run) +{ + unsigned int i; + for (i = 0; i < count; i++) { + create_task(mask, sleep, run); + } +} + +void expect_task_all(int pid, u64 runtime, u64 runtime_d, + u64 wait, u64 wait_d, unsigned int pcount, + unsigned int pcount_d) +{ + struct task_struct *t = __linsched_tasks[pid]; + if (check_unexpected + (!check_delta + (t->se.sum_exec_runtime, NSEC(runtime), NSEC(runtime_d)) + || !check_delta(t->sched_info.run_delay, NSEC(wait), NSEC(wait_d)) + || !check_delta(t->sched_info.pcount, pcount, pcount_d))) { + if (__expect_failure) { + puts("Unexpected success:"); + } + printf("expected process %d to have:\n", pid); + printf("runtime: %llu ms +- %llu ms\n", runtime, runtime_d); + printf("run_delay: %llu ms +- %llu ms\n", wait, wait_d); + printf("pcount: %d +- %d\n", pcount, pcount_d); + puts("-----------------"); + linsched_print_task_stats(); + exit(1); + } +} + +void expect_tasks_all(int lowpid, int highpid, u64 runtime, u64 runtime_d, + u64 wait, u64 wait_d, unsigned int pcount, + unsigned int pcount_d) +{ + int i; + int prev_fails = expected_failures; + if (__expect_failure) { + __expect_failure = -1; + } + for (i = lowpid; i <= highpid; i++) { + expect_task_all(i, runtime, runtime_d, wait, wait_d, pcount, + pcount_d); + } + if (__expect_failure) { + if (expected_failures == prev_fails) { + puts("Unexpected success:"); + printf("expected processes %d-%d to have:\n", lowpid, + highpid); + printf("runtime: %llu ms +- %llu ms\n", runtime, + runtime_d); + printf("run_delay: %llu ms +- %llu ms\n", wait, wait_d); + printf("pcount: %d +- %d\n", pcount, pcount_d); + puts("-----------------"); + linsched_print_task_stats(); + exit(1); + } + expected_failures = prev_fails + 1; + __expect_failure = 0; + } +} + +void validate_results(int *expected_results) +{ + expect_tasks_all(expected_results[0], expected_results[1], + expected_results[2], expected_results[3], + expected_results[4], expected_results[5], + expected_results[6], expected_results[7]); +} + +void set_test_duration(long ticks) +{ + test_duration = ticks; +} + +void set_test_name(const char *name) +{ + test_name = name; +} + +void __expect(const char *file, int line, const char *function, + const char *cond, int succeeded) +{ + if (check_unexpected(!succeeded)) { + if (__expect_failure) { + puts("Unexpected success:"); + } + printf("%s:%d: %s Check `%s'\n", file, line, function, cond); + exit(1); + } +} + +struct linsched_topology linsched_topo_db[MAX_TOPOLOGIES] = { + TOPO_UNIPROCESSOR, + TOPO_DUAL_CPU, + TOPO_DUAL_CPU_MC, + TOPO_QUAD_CPU, + TOPO_QUAD_CPU_MC, + TOPO_QUAD_CPU_DUAL_SOCKET, + TOPO_QUAD_CPU_QUAD_SOCKET, + TOPO_HEX_CPU_DUAL_SOCKET_SMT +}; + +int parse_topology(char *arg) +{ + if (!strcmp(arg, "uniprocessor")) + return UNIPROCESSOR; + else if (!strcmp(arg, "dual_cpu")) + return DUAL_CPU; + else if (!strcmp(arg, "dual_cpu_mc")) + return DUAL_CPU_MC; + else if (!strcmp(arg, "quad_cpu")) + return QUAD_CPU; + else if (!strcmp(arg, "quad_cpu_mc")) + return QUAD_CPU_MC; + else if (!strcmp(arg, "quad_cpu_dual_socket")) + return QUAD_CPU_DUAL_SOCKET; + else if (!strcmp(arg, "quad_cpu_quad_socket")) + return QUAD_CPU_QUAD_SOCKET; + else if (!strcmp(arg, "hex_cpu_dual_socket_smt")) + return HEX_CPU_DUAL_SOCKET_SMT; + return UNIPROCESSOR; +} + +__attribute__ ((weak)) +void test_main(int argc, char **argv) +{ + puts("implement test_main or main"); + exit(1); +} + +__attribute__ ((weak)) +int linsched_test_main(int argc, char **argv) +{ + test_name = argv[0]; + test_main(argc, argv); + if (expected_failures) { + printf("test %s had %d expected failures\n", test_name, + expected_failures); + } + return 0; +} diff --git a/tools/linsched/test_lib.h b/tools/linsched/test_lib.h new file mode 100644 index 00000000000000..eff4ee5a8e16d4 --- /dev/null +++ b/tools/linsched/test_lib.h @@ -0,0 +1,73 @@ +/* Test library for the Linux Scheduler Simulator + * + * Basic assertions about tasks, ability to expect test failures. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef TEST_LIB_H + +#include "linsched.h" + +/* Creates a sleep/run task on the given cpus. Returns the new task. */ +struct task_struct *create_task(unsigned long mask, int sleep, int run); +/* Creates count sleep/run tasks on the given cpus. */ +void create_tasks(unsigned int count, unsigned long mask, int sleep, int run); + +/* Require that the given condition be true. Equivalent to assert() + * except that this plays nicely with expect_failure() */ +#define expect(cond) __expect(__FILE__, __LINE__, __PRETTY_FUNCTION__, #cond, (cond)); + +/* Expect that the next call to expect() or one of the wrapping + * functions will fail (presumably due to a not-yet-fixed bug). + * + * Expected failures will not stop execution and will be reported at + * exit. Unexpected successes are treated like a normal failure. + */ +#define expect_failure() (__expect_failure = 1) + +/* Expect that the task given by pid has runtime within runtime +- + * runtime_d, and the equivalent for wait and pcount. */ +void expect_task_all(int pid, u64 runtime, u64 runtime_d, + u64 wait, u64 wait_d, unsigned int pcount, + unsigned int pcount_d); + +/* expect_task_all for all tasks from lowpid up to and including + * highpid. Using this with expect_failure means that at least one + * task should fail */ +void expect_tasks_all(int lowpid, int highpid, u64 runtime, u64 runtime_d, + u64 wait, u64 wait_d, unsigned int pcount, + unsigned int pcount_d); + +#define MAX_RESULTS 8 +void validate_results(int *expected_results); +/* Set information about the currently running test. Default test name is argv[0] */ +void set_test_duration(long ticks); +void set_test_name(const char *name); + +/* Implemented by user. Using this instead of test_main ensures that + * warnings are printed in the case of expected failures */ +void test_main(int argc, char **argv); + +extern struct linsched_topology linsched_topo_db[MAX_TOPOLOGIES]; + +int parse_topology(char *arg); + + +extern int __expect_failure; +void __expect(const char *file, int line, const char *function, + const char *cond, int succeeded); + +#endif diff --git a/tools/linsched/tests/Makefile b/tools/linsched/tests/Makefile new file mode 100644 index 00000000000000..91bb8eb5c071f8 --- /dev/null +++ b/tools/linsched/tests/Makefile @@ -0,0 +1,40 @@ +LINUXDIR = ./../../.. +LINSCHED_DIR=${LINUXDIR}/tools/linsched + +include ../Makefile.inc + +RAND_TEST_TYPES = rand gaussian poisson + +UNIT_TESTS = linsched_rand_test + +PERFORMANCE_TESTS = linsched basic_tests batch_balance_test \ + linsched_rnd_dist mcarlo-sim + +TESTS = ${UNIT_TESTS} ${PERFORMANCE_TESTS} fractional_cpu_test \ + fractional_cpu_test_rnd_dist perf_replay + +.DEFAULT_GOAL := all +.PHONY: run_all_tests all + +all: ${TESTS} + +run_unit_tests: ${UNIT_TESTS} + ( ulimit -s 8192; ./run_unit_tests.sh ${RAND_TEST_TYPES} ) + +run_all_tests: ${PERFORMANCE_TESTS} +# make seems to remove stack size ulimits for no apparent reason, +# and stack overflow due to recursion is a plausible bug + ( ulimit -s 8192; ./run_tests.sh $^ ) + +TEST_DEPS := ${TESTS:%=%.d} +-include ${TEST_DEPS} + +.SECONDEXPANSION: +${TESTS}: ${OBJ_FILES} $$@.o + @echo CC TEST $@ + @${LD_PERCPU} -o $@.percpu $^ + @${CC} ${LFLAGS} -o $@ $@.percpu -MMD + @rm $@.percpu + +clean: + rm -f ${TESTS} ${TEST_DEPS} *.o diff --git a/tools/linsched/tests/Makefile.mcarlo-sims b/tools/linsched/tests/Makefile.mcarlo-sims new file mode 100644 index 00000000000000..712b33467af440 --- /dev/null +++ b/tools/linsched/tests/Makefile.mcarlo-sims @@ -0,0 +1,27 @@ +# This is designed to be able to run from any directory, using either +# the current directory's mcarlo-sim program or the normal one if that +# does not exist. All output goes into ./$(topology)-results/* +# +# This allows multiple copies of this test to easily be run at once. +base := $(dir $(lastword $(MAKEFILE_LIST)))mcarlo-sims + +sims := $(addprefix sim-,$(shell seq 1 500)) + +exec := $(or $(wildcard mcarlo-sim) $(base)/mcarlo-sim) + +topologies := uniprocessor dual_cpu dual_cpu_mc quad_cpu quad_cpu_mc \ + quad_cpu_dual_socket quad_cpu_quad_socket hex_cpu_dual_socket_smt + +cur_topo = $(firstword $*) +cur_sim = $(lastword $*) + +run_all_tests: $(foreach topo,$(topologies),\ + $(foreach sim,$(sims),run_one_test_$(topo)\ $(sim))) + + +run_one_test_%: + @mkdir -p $(cur_topo)-results + ./mcarlo-sim --print_average_imbalance -t $(cur_topo) -f $(base)/$(cur_sim) \ + --duration 60000 -s 13074863168640 --print_sched_stats --print_cgroup_stats --print_nohz_stats | \ + sed -n -e '2,/^$$/p' -e '/^--/,/^$$/p' > \ + $(cur_topo)-results/$(cur_sim) diff --git a/tools/linsched/tests/basic_tests.c b/tools/linsched/tests/basic_tests.c new file mode 100644 index 00000000000000..08b83ea161fc1e --- /dev/null +++ b/tools/linsched/tests/basic_tests.c @@ -0,0 +1,328 @@ +/* Basic test suite for the Linux Scheduler Simulator + * + * A basic set of automated tests for linsched. The most important + * metric here is probably runtime, both run_delay and pcount are + * (even) more susceptible to small changes in timing that would not + * matter on a real machine. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "test_lib.h" +#include <strings.h> +#include <stdio.h> +#include <error.h> + +/* one minute */ +#define TEST_TICKS 60000 + +int *initialize_expectations(int *results, int result1, int result2, + int result3, int result4, int result5, + int result6, int result7, int result8) { + results[0] = result1; + results[1] = result2; + results[2] = result3; + results[3] = result4; + results[4] = result5; + results[5] = result6; + results[6] = result7; + results[7] = result8; + return results; +} + +extern void exit(int status); + +/* ensure that we get a task running on each cpu without overhead */ +void test_trivial_bal(int argc, char **argv) +{ + int count, mask; + struct linsched_topology topo; + int expected_results[MAX_RESULTS]; + int type = parse_topology(argv[2]); + + topo = linsched_topo_db[type]; + count = topo.nr_cpus; + mask = (1 << count) - 1; + + linsched_init(&topo); + create_tasks(count, mask, 0, 100); + linsched_run_sim(TEST_TICKS); + + validate_results(initialize_expectations((int *)expected_results, + 1, count, TEST_TICKS, 1, 0, 1, 1, 0)); + +} + +/* make sure that we can run > nr_cpus sleep/run tasks which require + * <= nr_cpus actual runtime without too much overhead */ +void test_basic_bal1(int argc, char **argv) +{ + int count, mask; + struct linsched_topology topo; + int type = parse_topology(argv[2]); + int expected_results[MAX_RESULTS]; + + topo = linsched_topo_db[type]; + + switch (type) { + case UNIPROCESSOR: + count = topo.nr_cpus + 1; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 26080, 10, 20880, 10, 6520, 10); + break; + case DUAL_CPU: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 27274, 100, 19000, 1000, 4090, 10); + break; + case DUAL_CPU_MC: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 27274, 100, 19000, 1000, 4090, 10); + break; + case QUAD_CPU: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 30000, 1, 15000, 1000, 3000, 1); + break; + case QUAD_CPU_MC: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 30000, 1, 15000, 1000, 3000, 1); + break; + case QUAD_CPU_DUAL_SOCKET: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 36000, 1000, 6000, 700, 2600, 200); + /* Poor select_idle_sibling + vruntime interaction? */ + expect_failure(); + break; + case QUAD_CPU_QUAD_SOCKET: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 40000, 600, 3000, 3000, 2000, 150); + break; + case HEX_CPU_DUAL_SOCKET_SMT: + count = topo.nr_cpus + 6; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 39200, 1000, 1000, 300, 2520, 100); + break; + default: + error(-1, 0, "unknown topology\n"); + + } + + linsched_init(&topo); + create_tasks(count, mask, 10, 20); + linsched_run_sim(TEST_TICKS); + + validate_results((int *)expected_results); +} + +/* Similar to the previous test, but require smaller overhead with + * longer busy/sleep intervals */ +void test_basic_bal2(int argc, char **argv) +{ + int count, mask; + struct linsched_topology topo; + int type = parse_topology(argv[2]); + int expected_results[MAX_RESULTS]; + + topo = linsched_topo_db[type]; + + switch (type) { + case UNIPROCESSOR: + count = topo.nr_cpus + 1; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 24200, 100, 23700, 100, 6050, 10); + break; + case DUAL_CPU: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 24200, 200, 23700, 300, 3510, 10); + break; + case DUAL_CPU_MC: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 24200, 200, 23700, 300, 3510, 10); + break; + case QUAD_CPU: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 24510, 200, 23300, 300, 2450, 10); + break; + case QUAD_CPU_MC: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 24510, 200, 23300, 300, 2450, 10); + break; + case QUAD_CPU_DUAL_SOCKET: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 38350, 1000, 2400, 500, 450, 100); + break; + case QUAD_CPU_QUAD_SOCKET: + count = topo.nr_cpus + 4; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 39000, 500, 1200, 200, 380, 80); + break; + case HEX_CPU_DUAL_SOCKET_SMT: + count = topo.nr_cpus + 6; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results, + 1, count, 39000, 600, 1300, 500, 385, 65); + break; + default: + error(-1, 0, "unknown topology\n"); + } + + linsched_init(&topo); + create_tasks(count, mask, 100, 200); + linsched_run_sim(TEST_TICKS); + + validate_results((int *)expected_results); +} + +/* Similar to basic_bal1, but make sure we can also have high-usage + * cpu-locked tasks without making problems overall */ +void test_bal1(int argc, char **argv) +{ + int count, mask; + struct linsched_topology topo; + int type = parse_topology(argv[2]); + int expected_results1[MAX_RESULTS]; + int expected_results2[MAX_RESULTS]; + + topo = linsched_topo_db[type]; + + switch (type) { + case QUAD_CPU: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results1, + 1, 6, 28500, 600, 17000, 1000, 1800, 100); + initialize_expectations((int *)expected_results2, + 7, 8, 32500, 600, 19000, 500, 2000, 100); + break; + case QUAD_CPU_MC: + /* XXX: Which property is making this looser than QUAD_CPU? */ + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results1, + 1, 6, 29000, 1000, 16500, 2000, 1800, 200); + initialize_expectations((int *)expected_results2, + 7, 8, 32500, 800, 19000, 1400, 2050, 150); + break; + case QUAD_CPU_DUAL_SOCKET: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results1, + 1, 10, 37300, 500, 4000, 500, 600, 50); + initialize_expectations((int *)expected_results2, + 11, 12, 43000, 500, 6000, 500, 700, 50); + break; + case QUAD_CPU_QUAD_SOCKET: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results1, + 1, 18, 39000, 500, 2500, 2000, 350, 70); + initialize_expectations((int *)expected_results2, + 19, 20, 46750, 250, 1300, 200, 330, 100); + break; + case HEX_CPU_DUAL_SOCKET_SMT: + count = topo.nr_cpus + 2; + mask = (1 << topo.nr_cpus) - 1; + initialize_expectations((int *)expected_results1, + 1, 26, 39200, 500, 1000, 500, 350, 50); + initialize_expectations((int *)expected_results2, + 27, 28, 46000, 2500, 2200, 100, 430, 10); + break; + default: + error(-1, 0, "unknown topology\n"); + } + + linsched_init(&topo); + create_tasks(count, mask, 100, 200); + create_tasks(2, 0x3, 50, 200); + linsched_run_sim(TEST_TICKS); + + validate_results((int *)expected_results1); + validate_results((int *)expected_results2); +} + +void test_list(int argc, char **argv); + +struct test { + char *name; + void (*fn)(int, char**); +}; + +struct test tests[] = { +#define TEST(x) { #x, test_##x } + TEST(trivial_bal), + TEST(basic_bal1), + TEST(basic_bal2), + TEST(bal1), + TEST(list), +}; + +void test_list(int argc, char **argv) +{ + int i; + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { + if (tests[i].fn != test_list) + puts(tests[i].name); + } +} + +void usage(char **argv) +{ + fprintf(stderr, "Usage: %s <test name> <topo>|list\n", argv[0]); + exit(1); +} + +void linsched_test_main(int argc, char **argv) +{ + int i; + if (argc < 2) { + usage(argv); + } + + set_test_duration(TEST_TICKS); + set_test_name(argv[1]); + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { + if (!strcmp(argv[1], tests[i].name)) { + tests[i].fn(argc, argv); + return; + } + } + usage(argv); +} diff --git a/tools/linsched/tests/batch_balance_test.c b/tools/linsched/tests/batch_balance_test.c new file mode 100644 index 00000000000000..1dc49a02659d33 --- /dev/null +++ b/tools/linsched/tests/batch_balance_test.c @@ -0,0 +1,78 @@ +/* Test for fixes to b/2236106 for the Linux Scheduler Simulator + * + * Make sure that /batch tasks get load balanced properly; when they + * don't you get b/2236106. Define "properly" as within 80% of + * perfectly fair, and 95% total utilization. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "linsched.h" +#include "test_lib.h" +#include <strings.h> +#include <stdio.h> + +#define INTERVAL_MSEC 60000 +#define PROTAG_SHARES (64000/16) +#define NBATCH 16 +#define TOTAL_CPUTIME ((INTERVAL_MSEC * (u64)NSEC_PER_MSEC) * 16) + +#define NLS 3 + +void linsched_test_main(int argc, char **argv) +{ + struct linsched_topology topo = TOPO_QUAD_CPU_QUAD_SOCKET; + int i; + u64 total = 0; + linsched_init(&topo); + struct cgroup *batch, *protag; + + batch = linsched_create_cgroup(root_cgroup, "batch"); + sched_group_set_shares(cgroup_tg(batch), 2); + + protag = linsched_create_cgroup(root_cgroup, "protag"); + sched_group_set_shares(cgroup_tg(protag), PROTAG_SHARES); + + + for (i = 0; i < NLS; i++) { + struct task_struct *p = create_task(0xffff, 0, 100); + linsched_add_task_to_group(p, protag); + } + + /* we create 40 batch task groups, each with .4 cores worth of + * shares and 1 100% running task in each group */ + for (i = 0; i < NBATCH; i++) { + struct task_struct *p = create_task(0xffff, 0, 100); + linsched_add_task_to_group(p, batch); + /* force them all to get balanced off /after/ + * being in the batch group */ + set_cpus_allowed(p, *cpumask_of(0)); + set_cpus_allowed(p, *cpu_online_mask); + } + + linsched_run_sim(INTERVAL_MSEC); + + for (i = 0; i < NBATCH + NLS; i++) + total += __linsched_tasks[i+1]->se.sum_exec_runtime; + + expect_failure(); + /* this test isn't quite so much of a requirement - + * utilization is more important than fairness here */ + expect_tasks_all(1, NBATCH, TOTAL_CPUTIME / NBATCH * 8/10, + TOTAL_CPUTIME / NBATCH * 2/10, 0, ~0ULL, 0, ~0); + + expect_failure(); + expect(total >= TOTAL_CPUTIME * 95/100); +} diff --git a/tools/linsched/tests/diff-mcarlo-500 b/tools/linsched/tests/diff-mcarlo-500 new file mode 100755 index 00000000000000..5e177b100ee932 --- /dev/null +++ b/tools/linsched/tests/diff-mcarlo-500 @@ -0,0 +1,144 @@ +#!/usr/bin/env python +import os +from optparse import OptionParser + +def score_basic(filename): + f = file(filename) + for line in f: + if line.startswith("average imbalance"): + split = line.split() + if len(split) > 3: + return [float(split[2]), float(split[3])] + return [float(split[2]), 0] + +def score_total_lb(filename): + f = file(filename) + for line in f: + if line.startswith("domain"): + line = line.split() + #lb_count for each idle + #does not count active load balance + return sum([float(line[x]) for x in [2,10,18]]) + return 0 + +def score_total_runtime(filename): + f = file(filename) + for line in f: + if line.startswith("CGroup = / "): + return float(line.split()[-1]) + +def score_sub_runtime(filename): + f = file(filename) + l = [] + inSection = False + for line in f: + if line.startswith("------ group runtime"): + inSection = True + if inSection and line.startswith("CGroup = /"): + l += [float(line.split()[-1])] + if l == []: + return None + return l + +def delta_basic(old, new): + return new - old + +def delta_percent(old, new): + return 100.0 * (new - old) / new + +def delta_min_percent(old, new): + div = min(new, old) + if div != 0: + return 100.0 * (new - old) / div + else: + return None + +SCORE_FN = score_basic +DELTA_FN = delta_basic + + +def sim_delta_list(sim1, sim2, topo): + l = [(None, "")] * 500 + for i in xrange(1,500): + f = "sim-%d" % i + old = new = None + try: + old = SCORE_FN(os.path.join(sim1, topo, f)) + new = SCORE_FN(os.path.join(sim2, topo, f)) + except IOError: + pass + if old and new: + if isinstance(old, list) and isinstance(old, list): + d = map(DELTA_FN, old, new) + else: + d = DELTA_FN(old, new) + l[i] = (d, f) + return l + +def format_delta(dlist): + if not isinstance(dlist, list): + dlist = [dlist] + out = "" + for d in dlist: + out += " %5.4f" % d + return out + +def dump_sim_deltas(sim1, sim2, topo): + for (d, f) in sim_delta_list(sim1, sim2, topo): + if d != None: + print f, format_delta(d) + +def avg_topo_deltas(sim1, sim2, topo): + sum = 0 + count = 0 + for (d, f) in sim_delta_list(sim1, sim2, topo): + if d != None: + if isinstance(d, list): + d = d[0] + sum += d + count += 1 + if count > 0: + return sum / count + else: + return None + +def avg_all_topos(sim1, sim2): + l = os.listdir(sim1) + l.sort() + for topo in l: + if topo.endswith("-results"): + print topo + " " + str(avg_topo_deltas(sim1, sim2, topo)) + + +parser = OptionParser("usage: %prog [options] <old> <new> command <command args>") +parser.add_option("-s", "--score", dest="score", + help="scoring function for a single run (basic, div_load)") +parser.add_option("-d", "--delta", dest="delta", + help="difference function between runs (basic, percent, min_percent)") +parser.epilog = """Valid commands: +dump <topology> - print all the deltas for the given topology +avg_topo <topology> - prints the average delta +avg_results - prints the average delta for all topologies +""" + +def format(f): + return parser.epilog +parser.format_epilog = format + +(options, args) = parser.parse_args() +if options.score != None: + m = {'basic' : score_basic, 'total_lb' : score_total_lb, + 'total_runtime' : score_total_runtime, + 'sub_runtime' : score_sub_runtime} + SCORE_FN=m[options.score] +if options.delta != None: + m = {'basic' : delta_basic, 'percent' : delta_percent, + 'min_percent' : delta_min_percent} + DELTA_FN=m[options.delta] + +if args[2] == "dump": + dump_sim_deltas(args[0], args[1], args[3]) +elif args[2] == "avg_topo": + print avg_topo_deltas(args[0], args[1], args[3]) +elif args[2] == "avg_results": + avg_all_topos(args[0], args[1]) diff --git a/tools/linsched/tests/fractional_cpu_test.c b/tools/linsched/tests/fractional_cpu_test.c new file mode 100644 index 00000000000000..32b0f5da78d90d --- /dev/null +++ b/tools/linsched/tests/fractional_cpu_test.c @@ -0,0 +1,151 @@ +/* Fractional CPU test for the Linux Scheduler Simulator + * + * A fractional CPU test that starts of two groups of tasks (a protagonist + * and an antagonist) with varying CPU share allocations. The net effect + * of the CPU alloction by the scheduler is measured by the amount of run + * time alloted to each group at the end of the simulation. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "linsched.h" +#include <strings.h> +#include <getopt.h> +#include <stdio.h> + + +static int verbose_flag; + +void print_usage(char *cmd) +{ + printf("Usage: %s --pthread p --athread a --pshares m --ashares c" + " --busy b --sleep s --duration\n", cmd); + printf("\t\t --pthread[-p]: Number of protagonist threads\n"); + printf("\t\t --athread[-a]: Number of antagonist threads\n"); + printf("\t\t --pshares[-m]: Shares value for protagonist\n"); + printf("\t\t --ashares[-c]: Shares value for antagonist\n"); + printf("\t\t --busy[-b]: busy time for threads in ms\n"); + printf("\t\t --sleep[-s]: sleep time for threads in ms\n"); + printf("\t\t --duration[-l]: number of ticks (ms) to " + "run the simulation - default (60000)\n"); +} + +int linsched_test_main(int argc, char **argv) +{ + int i, c; + struct task_struct *t; + struct cgroup *protag, *antag; + unsigned long pthreads = 0, athreads = 0; + unsigned long pshares = 0, ashares = 0; + unsigned long busy = 0, sleep = 0; + unsigned long duration = 60000; + + while (1) { + static struct option long_options[] = { + {"verbose", no_argument, &verbose_flag, 1}, + {"brief", no_argument, &verbose_flag, 0}, + {"pthreads", required_argument, 0, 'p'}, + {"athreads", required_argument, 0, 'a'}, + {"pshares", required_argument, 0, 'm'}, + {"ashares", required_argument, 0, 'c'}, + {"busy", required_argument, 0, 'b'}, + {"sleep", required_argument, 0, 's'}, + {"duration", required_argument, 0, 'l'}, + {0, 0, 0, 0} + }; + /* getopt_long stores the option index here. */ + int option_index = 0; + + c = getopt_long(argc, argv, "p:a:m:c:b:s:l", + long_options, &option_index); + + /* Detect the end of the options. */ + if (c == -1) + break; + + switch (c) { + case 0: + break; + + case 'p': + pthreads = simple_strtol(optarg, NULL, 0); + break; + + case 'a': + athreads = simple_strtol(optarg, NULL, 0); + break; + + case 'm': + pshares = simple_strtol(optarg, NULL, 0); + break; + + case 'c': + ashares = simple_strtol(optarg, NULL, 0); + break; + + case 'b': + busy = simple_strtol(optarg, NULL, 0); + break; + + case 's': + sleep = simple_strtol(optarg, NULL, 0); + break; + + case 'l': + duration = simple_strtol(optarg, NULL, 0); + break; + + case '?': + /* getopt_long already printed an error message. */ + break; + } + } + + if (!pthreads || !athreads || !pshares || !ashares || !busy || !sleep) { + print_usage(argv[0]); + return 1; + } + + /* Initialize linsched. */ + linsched_init(NULL); + + protag = linsched_create_cgroup(root_cgroup, "protag"); + sched_group_set_shares(cgroup_tg(protag), pshares); + + /* Create protagonist */ + for (i = 0; i < pthreads; i++) { + t = linsched_create_normal_task(linsched_create_sleep_run + (sleep, busy), 0); + linsched_add_task_to_group(t, protag); + } + + /* Create antagonist */ + antag = linsched_create_cgroup(root_cgroup, "antag"); + sched_group_set_shares(cgroup_tg(antag), ashares); + for (i = 0; i < athreads; i++) { + t = linsched_create_normal_task(linsched_create_sleep_run + (sleep, busy), 0); + linsched_add_task_to_group(t, antag); + } + + /* Run simulation to completion. */ + linsched_run_sim(duration); + + /* we always want these */ + linsched_global_options.print_tasks = 1; + linsched_global_options.print_cgroups = 1; + + return 0; +} diff --git a/tools/linsched/tests/fractional_cpu_test_rnd_dist.c b/tools/linsched/tests/fractional_cpu_test_rnd_dist.c new file mode 100644 index 00000000000000..9223fad9427e69 --- /dev/null +++ b/tools/linsched/tests/fractional_cpu_test_rnd_dist.c @@ -0,0 +1,302 @@ +/* Copyright 2011 Google Inc. All Rights Reserved. + * Author: asr@google.com (Abhishek Srivastava) + * + * Fractional CPU test using tasks following normal + * and poisson sleep / run time distributions. + * + */ + +#include "linsched.h" +#include "linsched_rand.h" +#include <strings.h> +#include <getopt.h> +#include <stdio.h> +#include <error.h> + +static int verbose_flag; + +void print_usage(char *cmd) +{ + printf("Usage: %s --pthread p --athread a --pshares m --ashares c" + " --busy b --sleep s --duration\n", cmd); + printf("\t\t --pthread[-p]: Number of protagonist threads\n"); + printf("\t\t --athread[-a]: Number of antagonist threads\n"); + printf("\t\t --pshares[-m]: Shares value for protagonist\n"); + printf("\t\t --ashares[-c]: Shares value for antagonist\n"); + printf("\t\t --p_busy_mu[-b]: busy mu for protagonists\n"); + printf("\t\t --p_sleep_mu[-s]: sleep mu for protagonists\n"); + printf("\t\t --p_busy_sigma[-g]: busy sigma for protagonists\n"); + printf("\t\t --p_sleep_sigma[-h]: sleep sigma for protagonists\n"); + printf("\t\t --a_busy_mu[-j]: busy mu for antagonists\n"); + printf("\t\t --a_sleep_mu[-k]: sleep mu for antagonists\n"); + printf("\t\t --a_busy_sigma[-z]: busy sigma for antagonists\n"); + printf("\t\t --a_sleep_sigma[-d]: sleep sigma for antagonists\n"); + printf("\t\t --prot_rnd_type[-t]: protagonist rnd dist type\n"); + printf("\t\t --anta_rnd_type[-y]: antagonist rnd dist type\n"); + printf("\t\t --duration[-l]: number of ticks (ms) to " + "run the simulation - default (60000)\n"); + printf("\t\t rnd distribution type : \n"); + printf("\t\t\t 1. busy = gaussian, sleep = gaussian\n"); + printf("\t\t\t 2. busy = poisson, sleep = gaussian\n"); + printf("\t\t\t 3. busy = gaussian, sleep = poisson\n"); + printf("\t\t\t 4. busy = poisson, sleep = poisson\n"); + printf("\t\t all sleep / busy times to be specified in ms\n"); + +} + +int linsched_test_main(int argc, char **argv) +{ + int i, c; + struct task_struct *t; + struct cgroup *protag, *antag; + unsigned long pthreads = 0, athreads = 0; + unsigned long pshares = 0, ashares = 0; + unsigned long duration = 60000; + unsigned int p_sleep_mu = 0, p_busy_mu = 0, p_sleep_sigma = + 0, p_busy_sigma = 0; + unsigned int a_sleep_mu = 0, a_busy_mu = 0, a_sleep_sigma = + 0, a_busy_sigma = 0; + unsigned int seed = getticks(); + struct rand_dist *busy_distA, *sleep_distA; + struct rand_dist *busy_distP, *sleep_distP; + enum RND_TYPE sleepA_type = -1, busyA_type = -1, sleepP_type = -1, busyP_type = -1; + + while (1) { + static struct option long_options[] = { + {"verbose", no_argument, &verbose_flag, 1}, + {"brief", no_argument, &verbose_flag, 0}, + {"pthreads", required_argument, 0, 'p'}, + {"athreads", required_argument, 0, 'a'}, + {"pshares", required_argument, 0, 'm'}, + {"ashares", required_argument, 0, 'c'}, + {"p_busy_mu", required_argument, 0, 'b'}, + {"p_sleep_mu", required_argument, 0, 's'}, + {"p_busy_sigma", required_argument, 0, 'g'}, + {"p_sleep_sigma", required_argument, 0, 'h'}, + {"a_busy_mu", required_argument, 0, 'j'}, + {"a_sleep_mu", required_argument, 0, 'k'}, + {"a_busy_sigma", required_argument, 0, 'z'}, + {"a_sleep_sigma", required_argument, 0, 'd'}, + {"prot_rnd_type", required_argument, 0, 't'}, + {"anta_rnd_type", required_argument, 0, 'y'}, + {"duration", required_argument, 0, 'l'}, + {0, 0, 0, 0} + }; + /* getopt_long stores the option index here. */ + int option_index = 0; + + c = getopt_long(argc, argv, + "p:a:m:c:b:s:g:h:j:k:z:d:t:y:l", + long_options, &option_index); + + /* Detect the end of the options. */ + if (c == -1) + break; + + switch (c) { + case 0: + break; + + case 'p': + pthreads = simple_strtol(optarg, NULL, 0); + break; + + case 'a': + athreads = simple_strtol(optarg, NULL, 0); + break; + + case 'm': + pshares = simple_strtol(optarg, NULL, 0); + break; + + case 'c': + ashares = simple_strtol(optarg, NULL, 0); + break; + + case 'b': + p_busy_mu = simple_strtol(optarg, NULL, 0); + break; + + case 's': + p_sleep_mu = simple_strtol(optarg, NULL, 0); + break; + + case 'g': + p_busy_sigma = simple_strtol(optarg, NULL, 0); + break; + + case 'h': + p_sleep_sigma = simple_strtol(optarg, NULL, 0); + break; + + case 'j': + a_busy_mu = simple_strtol(optarg, NULL, 0); + break; + + case 'k': + a_sleep_mu = simple_strtol(optarg, NULL, 0); + break; + + case 'z': + a_busy_sigma = simple_strtol(optarg, NULL, 0); + break; + + case 'd': + a_sleep_sigma = simple_strtol(optarg, NULL, 0); + break; + + case 't': + i = simple_strtol(optarg, NULL, 0); + switch (i) { + case 1: + sleepP_type = GAUSSIAN; + busyP_type = GAUSSIAN; + break; + case 2: + sleepP_type = GAUSSIAN; + busyP_type = POISSON; + break; + case 3: + sleepP_type = POISSON; + busyP_type = GAUSSIAN; + break; + case 4: + sleepP_type = POISSON; + busyP_type = POISSON; + break; + default: + /* default to normal dist for both */ + sleepP_type = GAUSSIAN; + busyP_type = GAUSSIAN; + break; + } + break; + + case 'y': + i = simple_strtol(optarg, NULL, 0); + switch (i) { + case 1: + sleepA_type = GAUSSIAN; + busyA_type = GAUSSIAN; + break; + case 2: + sleepA_type = GAUSSIAN; + busyA_type = POISSON; + break; + case 3: + sleepA_type = POISSON; + busyA_type = GAUSSIAN; + break; + case 4: + sleepA_type = POISSON; + busyA_type = POISSON; + break; + default: + /* default to normal dist for both */ + sleepA_type = GAUSSIAN; + busyA_type = GAUSSIAN; + break; + } + break; + + case 'l': + duration = simple_strtol(optarg, NULL, 0); + break; + + case '?': + /* getopt_long already printed an error message. */ + break; + } + } + + if (!pthreads || !athreads || !pshares || !ashares || !p_busy_mu + || !p_sleep_mu || !p_busy_sigma || !p_sleep_sigma || !a_busy_mu + || !a_sleep_mu || !a_sleep_sigma || !a_busy_sigma) { + print_usage(argv[0]); + return 1; + } + + /* Initialize linsched. */ + linsched_init(NULL); + + protag = linsched_create_cgroup(root_cgroup, "protag"); + sched_group_set_shares(cgroup_tg(protag), pshares); + + /* create the distributions */ + seed = getticks(); + + switch (busyP_type) { + case GAUSSIAN: + busy_distP = + linsched_init_gaussian(p_busy_mu, p_busy_sigma, seed); + break; + case POISSON: + busy_distP = linsched_init_poisson(p_busy_mu, seed); + break; + default: + error(1, 0, "unrecognized distribution: %d\n", busyP_type); + } + switch (sleepP_type) { + case GAUSSIAN: + sleep_distP = + linsched_init_gaussian(p_sleep_mu, p_sleep_sigma, + seed); + break; + case POISSON: + sleep_distP = linsched_init_poisson(p_sleep_mu, seed); + break; + default: + error(1, 0, "unrecognized distribution: %d\n", sleepP_type); + } + + switch (busyA_type) { + case GAUSSIAN: + busy_distA = + linsched_init_gaussian(a_busy_mu, a_busy_sigma, seed); + break; + case POISSON: + busy_distA = linsched_init_poisson(a_busy_mu, seed); + break; + default: + error(1, 0, "unrecognized distribution: %d\n", busyA_type); + } + switch (sleepA_type) { + case GAUSSIAN: + sleep_distA = + linsched_init_gaussian(a_sleep_mu, a_sleep_sigma, + seed); + break; + case POISSON: + sleep_distA = linsched_init_poisson(a_sleep_mu, seed); + break; + default: + error(1, 0, "unrecognized distribution: %d\n", sleepA_type); + } + + /* Create protagonist */ + for (i = 0; i < pthreads; i++) { + t = linsched_create_normal_task + (linsched_create_rnd_dist_sleep_run + (sleep_distP, busy_distP), 0); + linsched_add_task_to_group(t, protag); + } + + /* Create antagonist */ + antag = linsched_create_cgroup(root_cgroup, "antag"); + sched_group_set_shares(cgroup_tg(protag), ashares); + for (i = 0; i < athreads; i++) { + t = linsched_create_normal_task + (linsched_create_rnd_dist_sleep_run + (sleep_distA, busy_distA), 0); + linsched_add_task_to_group(t, antag); + } + + /* Run simulation to completion. */ + linsched_run_sim(duration); + + /* we always want these */ + linsched_global_options.print_tasks = 1; + linsched_global_options.print_cgroups = 1; + + return 0; +} diff --git a/tools/linsched/tests/linsched.c b/tools/linsched/tests/linsched.c new file mode 100644 index 00000000000000..38dad4dabb4904 --- /dev/null +++ b/tools/linsched/tests/linsched.c @@ -0,0 +1,72 @@ +/* LinSched -- The Linux Scheduler Simulator + * Copyright (C) 2008 John M. Calandrino + * E-mail: jmc@cs.unc.edu + * + * Example scheduling simulation. Tasks are created and then the simulation + * is run for some number of ticks. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program (see COPYING); if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "linsched.h" +#include <strings.h> + +#define LINSCHED_TICKS 60000 + +int linsched_test_main(int argc, char **argv) +{ + struct task_struct *p; + struct cgroup *cgrp; + + + /* Initialize linsched. */ + linsched_init(NULL); + + cgrp = linsched_create_cgroup(root_cgroup, "test"); + sched_group_set_shares(cgroup_tg(cgrp), 2048); + + /* Create some tasks with "callbacks" that should be called + * every scheduling decision. + */ + linsched_create_normal_task(linsched_create_sleep_run(8, 2), 0); + + linsched_create_RTrr_task(linsched_create_sleep_run(8, 2), 90); + linsched_create_RTfifo_task(linsched_create_sleep_run(8, 2), 55); + + /* create more tasks here... */ + + p = linsched_create_normal_task(linsched_create_sleep_run(8, 2), 0); + linsched_add_task_to_group(p, cgrp); + + linsched_create_normal_task(linsched_create_sleep_run(8, 2), 0); + linsched_create_normal_task(linsched_create_sleep_run(8, 2), 0); + linsched_create_normal_task(linsched_create_sleep_run(8, 2), 0); + linsched_create_normal_task(linsched_create_sleep_run(8, 2), 0); + + /* Run simulation for 500 ticks. */ + linsched_run_sim(500); + +#if 0 + /* Force migrations between two CPUs, and allow migrations + * afterwards (so load balancing will kick in eventually). + */ + linsched_force_migration(linsched_get_task(2), 0, 1); + +#endif + /* Run simulation to completion. */ + linsched_run_sim(LINSCHED_TICKS-500); + + return 0; +} diff --git a/tools/linsched/tests/linsched_rand_test.c b/tools/linsched/tests/linsched_rand_test.c new file mode 100644 index 00000000000000..1d6f97217dacc7 --- /dev/null +++ b/tools/linsched/tests/linsched_rand_test.c @@ -0,0 +1,250 @@ +/* Copyright 2011 Google Inc. All Rights Reserved. + * Author: asr@google.com (Abhishek Srivastava) + * + * Tests for the LinSched rand(), gaussian and poisson generators + **/ +#include <linux/kernel.h> + +#include <string.h> +#include <stdio.h> +#include <string.h> +#include <math.h> + +#include "linsched_rand.h" + +double calc_deviation(double avg, double sum_sq, int n) +{ + return sqrt((sum_sq / n) - (avg * avg)); +} + +/* test the linsched_rand() function + * Note : a fair random number generator should have mu close to 0.5 + * and sd = 0.25 + * */ +int test_linsched_rand(int argc, char **argv) +{ + unsigned int seed = + (unsigned int) simple_strtoul(argv[2], NULL, 0); + int n = simple_strtoul(argv[3], NULL, 0); + int *state = linsched_init_rand(seed); + int i; + double sum = 0, sum_sq = 0; + double val, avg; + + for (i = 0; i < n; i++) { + val = linsched_rand(state); + sum += val; + sum_sq += (val * val); + fprintf(stdout, "val = %f\n", val); + } + + avg = sum / (double) n; + + fprintf(stdout, "\n AVG(mu) : %f, DEVIATION(sd) = %f\n", avg, + calc_deviation(avg, sum_sq, n)); + linsched_destroy_rand(state); + return 0; +} + +/* test the linsched_rand_range() function */ +int test_linsched_rand_range(int argc, char **argv) +{ + unsigned int seed = + (unsigned int) simple_strtoul(argv[2], NULL, 0); + unsigned long low = simple_strtoul(argv[3], NULL, 0); + unsigned long high = simple_strtoul(argv[4], NULL, 0); + int n = simple_strtoul(argv[5], NULL, 0); + unsigned int *state = linsched_init_rand(seed); + int i; + double sum = 0, sum_sq = 0, avg, val; + + for (i = 0; i < n; i++) { + val = linsched_rand_range(low, high, state); + sum += val; + sum_sq += (val * val); + fprintf(stdout, "val = %f\n", val); + } + + avg = sum / (double) n; + + fprintf(stdout, "AVG(mu) : %f, DEVIATION(sd) = %f\n", avg, + calc_deviation(avg, sum_sq, n)); + linsched_destroy_rand(state); + return 0; + +} + +/* test the linsched_create_gaussian_dist() function */ +int test_linsched_gaussian(int argc, char **argv) +{ + unsigned int seed = + (unsigned int) simple_strtoul(argv[2], NULL, 0); + int mu = simple_strtoul(argv[3], NULL, 0); + int sd = simple_strtoul(argv[4], NULL, 0); + int n = simple_strtoul(argv[5], NULL, 0); + int i, val; + struct rand_dist *rdist = linsched_init_gaussian(mu, sd, seed); + + long sum = 0, sum_sq = 0; + double avg; + + for (i = 0; i < n; i++) { + val = linsched_gen_gaussian_dist(rdist); + sum += val; + sum_sq += (val * val); + } + + avg = sum / (double) n; + + fprintf(stdout, "\n AVG(mu) : %f, DEVIATION(sd) = %f\n", avg, + calc_deviation(avg, sum_sq, n)); + linsched_destroy_gaussian(rdist); + return 0; +} + +/* test the linsched_create_poisson_dist() function */ +int test_linsched_poisson(int argc, char **argv) +{ + unsigned int seed = + (unsigned int) simple_strtoul(argv[2], NULL, 0); + int mu = simple_strtoul(argv[3], NULL, 0); + int n = simple_strtoul(argv[4], NULL, 0); + int i, val; + struct rand_dist *rdist = linsched_init_poisson(mu, seed); + + long sum = 0, sum_sq = 0; + double avg; + + for (i = 0; i < n; i++) { + val = linsched_gen_poisson_dist(rdist); + sum += val; + sum_sq += (val * val); + } + + avg = sum / (double) n; + + fprintf(stdout, "\n AVG(mu) : %f, DEVIATION(sd) = %f\n", avg, + calc_deviation(avg, sum_sq, n)); + linsched_destroy_poisson(rdist); + return 0; + +} + +/* test the linsched_gen_exp_dist() function */ +int test_linsched_exponential(int argc, char **argv) +{ + unsigned int seed = + (unsigned int) simple_strtoul(argv[2], NULL, 0); + int mu = simple_strtoul(argv[3], NULL, 0); + int n = simple_strtoul(argv[4], NULL, 0); + struct rand_dist *rdist = linsched_init_exponential(mu, seed); + long sum = 0, sum_sq = 0; + int i; + double avg, val; + + for (i = 0; i < n; i++) { + val = linsched_gen_exp_dist(rdist); + sum += val; + sum_sq += (val * val); + } + + avg = sum / (double) n; + fprintf(stdout, "\n AVG(mu) : %f, DEVIATION(sd) = %f\n", avg, + calc_deviation(avg, sum_sq, n)); + linsched_destroy_exponential(rdist); + return 0; + +} + +int test_linsched_lognormal(int argc, char **argv) +{ + unsigned int seed = + (unsigned int) simple_strtoul(argv[2], NULL, 0); + int meanlog = simple_strtoul(argv[3], NULL, 0); + int sdlog = simple_strtoul(argv[4], NULL, 0); + int n = simple_strtoul(argv[5], NULL, 0); + int i; + double sdlog_sq = pow(sdlog, 2); + double exp_mean = exp(meanlog + 0.5 * sdlog_sq); + double exp_sd = sqrt((exp(sdlog_sq) - 1) * + (exp(2 * meanlog + sdlog_sq))); + struct rand_dist *rdist = linsched_init_lognormal(meanlog, sdlog, seed); + double avg, val, sum = 0, sum_sq = 0; + + for (i = 0; i < n; i++) { + val = linsched_gen_lognormal_dist(rdist); + sum += val; + sum_sq += (val * val); + } + + avg = sum / (double) n; + fprintf(stdout, "\nAVG(mu): %f, DEVIATION(sd) = %f\n", avg, + calc_deviation(avg, sum_sq, n)); + fprintf(stdout, "E.AVG: %f, Exp. DEV = %f\n", exp_mean, + exp_sd); + linsched_destroy_lognormal(rdist); + return 0; +} + +void print_usage(char *cmd) +{ + printf("\nUsage: %s <TEST_TYPE> [[PARAMETERS]]\n", cmd); + printf("\t TEST_TYPE : rand / rand_range / gaussian / poisson / exp /" + "lnorm\n"); + printf("\t PARAMETERS for rand : seed NO_OF_SAMPLES\n"); + printf("\t PARAMETERS for rand_range : seed <LOW> <HIGH>" + " NO_OF_SAMPLES\n"); + printf + ("\t PARAMETERS for gaussian : seed mu sigma NO_OF_SAMPLES\n"); + printf("\t PARAMETERS for poisson : seed mu NO_OF_SAMPLES\n"); + printf("\t PARAMETERS for exponential : seed mu NO_OF_SAMPLES\n"); + printf("\t PARAMETERS for lognormal :" + " seed meanlog sdlog NO_OF_SAMPLES\n"); + printf("EXAMPLE : %s rand 12345 10000\n", cmd); + printf("EXAMPLE : %s gaussian 12345 1000 10 10000\n", cmd); + printf("EXAMPLE : %s poisson 12345 500 10000\n", cmd); + printf("EXAMPLE : %s exp 12345 500 10000\n", cmd); + printf("EXAMPLE : %s lnorm 12345 1000 10 10000\n", cmd); +} + +/* testing linsched_rand() + * argv[1] : rand + * argv[2] : seed for rand() + * argv[3] : number of samples + * testing linsched_create_gaussian_dist() + * argv[1] : gaussian + * argv[2] : seed for rand() + * argv[3] : mean for gaussian (mu) + * argv[4] : sd for gaussian (sd) + * argv[5] : number of samples + * testing linsched_create_poisson_dist() + * argv[1] : poisson + * argv[2] : seed for rand() + * argv[3] : mean for poisson (mu) + * argv[4] : number of samples + */ +int linsched_test_main(int argc, char **argv) +{ + if (argc == 4 && !strcmp(argv[1], "rand")) + test_linsched_rand(argc, argv); + + else if (argc == 6 && !strcmp(argv[1], "rand_range")) + test_linsched_rand_range(argc, argv); + + else if (argc == 6 && !strcmp(argv[1], "gaussian")) + test_linsched_gaussian(argc, argv); + + else if (argc == 5 && !strcmp(argv[1], "poisson")) + test_linsched_poisson(argc, argv); + + else if (argc == 5 && !strcmp(argv[1], "exp")) + test_linsched_exponential(argc, argv); + + else if (argc == 6 && !strcmp(argv[1], "lnorm")) + test_linsched_lognormal(argc, argv); + + else + print_usage(argv[0]); + + return 0; +} diff --git a/tools/linsched/tests/linsched_rnd_dist.c b/tools/linsched/tests/linsched_rnd_dist.c new file mode 100644 index 00000000000000..f5455bf6ad9103 --- /dev/null +++ b/tools/linsched/tests/linsched_rnd_dist.c @@ -0,0 +1,60 @@ +#include "linsched.h" +#include "linsched_rand.h" +#include <strings.h> + +#define LINSCHED_TICKS 60000 + +int linsched_test_main(int argc, char **argv) +{ + struct task_struct *t1, *t2; + struct cgroup *g1; + + struct rand_dist *pdist, *gdist; + int seed = getticks(); + int sleep_mu = 400, sleep_sigma = 20; + int busy_mu = 100; + + /* Initialize linsched. */ + linsched_init(NULL); + + /* create a gaussian sleep dist */ + gdist = linsched_init_gaussian(sleep_mu, sleep_sigma, seed); + + /* create a poisson dist */ + pdist = linsched_init_poisson(busy_mu, seed); + + t1 = linsched_create_normal_task( + linsched_create_rnd_dist_sleep_run(gdist, pdist), 0); + + g1 = linsched_create_cgroup(root_cgroup, "g1"); + sched_group_set_shares(cgroup_tg(g1), 2048); + linsched_add_task_to_group(t1, g1); + + linsched_create_RTrr_task(linsched_create_rnd_dist_sleep_run + (pdist, gdist), 0); + + /* create more tasks here... */ + + t2 = linsched_create_RTfifo_task(linsched_create_sleep_run + (8, 2), 0); + linsched_add_task_to_group(t2, g1); + + linsched_create_normal_task(linsched_create_rnd_dist_sleep_run + (gdist, gdist), 0); + + /* Run simulation for 500 ticks. */ + linsched_run_sim(500); + + /* Run simulation to completion. */ + linsched_run_sim(LINSCHED_TICKS - 500); + + /* we always want these */ + linsched_global_options.print_tasks = 1; + linsched_global_options.print_cgroups = 1; + + /* cleanup */ + linsched_destroy_gaussian(gdist); + linsched_destroy_poisson(pdist); + + return 0; +} diff --git a/tools/linsched/tests/mcarlo-sim-file b/tools/linsched/tests/mcarlo-sim-file new file mode 100644 index 00000000000000..fa405f75ba3dd6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sim-file @@ -0,0 +1,12 @@ +10 +LOGNORMAL 12.206504 1.705361 LOGNORMAL 13.485623 1.872636 22714 +LOGNORMAL 11.744351 1.313683 EXPONENTIAL 13.485623 21790 +LOGNORMAL 11.627752 3.632489 EXPONENTIAL .485623 17286 +EXPONENTIAL 11.627752 LOGNORMAL 13.295901 2.208139 6406 +LOGNORMAL 11.337185 1.071873 LOGNORMAL 13.504106 3.507101 26490 +GAUSSIAN 659988 883484 EXPONENTIAL 13.504106 13708 +LOGNORMAL 13.832754 1.096362 POISSON 687786 4395 +LOGNORMAL 12.072850 2.394953 GAUSSIAN 788963 891348 20837 +POISSON 615248 LOGNORMAL 12.297182 1.733237 17443 +LOGNORMAL 11.767070 2.151760 LOGNORMAL 11.002263 3.030543 892 + diff --git a/tools/linsched/tests/mcarlo-sim.c b/tools/linsched/tests/mcarlo-sim.c new file mode 100644 index 00000000000000..cf56af8da6778d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sim.c @@ -0,0 +1,120 @@ +/* Monte Carlo simulation of task models for Linsched + * + * The simulation simulates various combinations of task models within task + * groups. Given an architecture, the number of task groups to simulate + * and the shares for each task group, the simulation creates random number of + * tasks with random run / sleep distributions chosen from the set of available + * distributions - lognormal, normal, poisson, exponential. After the simulation, + * a report is generated that prints out all the task and group statistics for + * each run of the simulation. Presently this simulation does not support + * hierarchies of task groups -- just flat task groups. + */ + +#include "linsched.h" +#include "linsched_rand.h" +#include "linsched_sim.h" +#include "test_lib.h" +#include <string.h> +#include <getopt.h> +#include <stdio.h> + +void print_usage(char *cmd) +{ + printf("Usage: %s -t <topo> -f <SHARES_FILE>" + " --duration <SIMDUARATION> [-c <cpus> -m <monitor_cpus>] [-s seed]\n", cmd); +} + +void run_mcarlo_sim(char *stopo, char *tg_file, int simduration, + unsigned int seed, struct cpumask *cpus, + struct cpumask *monitor_cpus) +{ + struct linsched_topology topo = linsched_topo_db[parse_topology(stopo)]; + struct linsched_sim *lsim; + unsigned int *rand_state = linsched_init_rand(seed); + + linsched_init(&topo); + lsim = linsched_create_sim(tg_file, cpus, rand_state); + + if (!cpumask_subset(cpu_online_mask, cpus)) { + /* split the system into two "cpuset"s with default attrs */ + cpumask_var_t *doms = alloc_sched_domains(2); + cpumask_copy(doms[0], cpus); + cpumask_copy(doms[1], monitor_cpus); + partition_sched_domains(2, doms, NULL); + } + + if (lsim) { + linsched_run_sim(simduration); + print_report(lsim); + linsched_destroy_sim(lsim); + } else { + fprintf(stderr, "failed to create simulation.\n"); + print_usage("mcarlo-sim"); + } +} + +int linsched_test_main(int argc, char **argv) +{ + int c, simduration = 0; + char tg_file[256] = "", topo[256] = ""; + unsigned int seed = getticks(); + + struct cpumask cpus = CPU_MASK_ALL, monitor_cpus = CPU_MASK_NONE; + + while (1) { + static struct option const long_options[] = { + {"topo", required_argument, 0, 't'}, + {"tg_file", required_argument, 0, 'f'}, + {"duration", required_argument, 0, 'd'}, + {"cpus", required_argument, 0, 'c'}, + {"monitor_cpus", required_argument, 0, 'm'}, + {0, 0, 0, 0} + }; + /* getopt_long stores the option index here. */ + int option_index = 0; + + c = getopt_long(argc, argv, "t:f:d:s:c:m:", + long_options, &option_index); + + /* Detect the end of the options. */ + if (c == -1) + break; + + switch (c) { + + case 't': + strcpy(topo, optarg); + break; + + case 'f': + strcpy(tg_file, optarg); + break; + + case 'd': + simduration = simple_strtoul(optarg, NULL, 0); + break; + case 's': + seed = simple_strtoul(optarg, NULL, 0); + break; + case 'c': + cpulist_parse(optarg, &cpus); + break; + case 'm': + cpulist_parse(optarg, &monitor_cpus); + break; + case '?': + /* getopt_long already printed an error message. */ + break; + } + } + + if (strcmp(topo, "") && strcmp(tg_file, "") && simduration && + !cpumask_intersects(&cpus, &monitor_cpus)) { + fprintf(stdout, "\nTOPO = %s, tg_file = %s, duration = %d\n", + topo, tg_file, simduration); + run_mcarlo_sim(topo, tg_file, simduration, seed, &cpus, &monitor_cpus); + } else + print_usage(argv[0]); + + return 0; +} diff --git a/tools/linsched/tests/mcarlo-sims/sim-1 b/tools/linsched/tests/mcarlo-sims/sim-1 new file mode 100644 index 00000000000000..875377e278bffd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-1 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 12.760146 3.781421 EXPONENTIAL 676757 28668 +LOGNORMAL 13.248985 2.690174 EXPONENTIAL 637274 21072 +LOGNORMAL 11.074219 3.403461 LOGNORMAL 12.315119 3.212118 16903 +LOGNORMAL 11.747014 1.057279 LOGNORMAL 11.446453 1.536071 9543 +LOGNORMAL 11.591404 1.735266 EXPONENTIAL 642209 4120 diff --git a/tools/linsched/tests/mcarlo-sims/sim-10 b/tools/linsched/tests/mcarlo-sims/sim-10 new file mode 100644 index 00000000000000..f4551d2c41fe9e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-10 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.456991 3.645054 EXPONENTIAL 669767 25162 +LOGNORMAL 12.233546 3.200570 EXPONENTIAL 668348 12323 +LOGNORMAL 12.945504 2.081031 LOGNORMAL 13.940316 2.892899 5109 +LOGNORMAL 11.434738 2.635742 LOGNORMAL 11.968636 2.861215 29027 diff --git a/tools/linsched/tests/mcarlo-sims/sim-100 b/tools/linsched/tests/mcarlo-sims/sim-100 new file mode 100644 index 00000000000000..09226998229083 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-100 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.860516 1.694785 EXPONENTIAL 661359 8335 +LOGNORMAL 11.163880 1.325985 LOGNORMAL 11.455832 3.164822 18327 diff --git a/tools/linsched/tests/mcarlo-sims/sim-101 b/tools/linsched/tests/mcarlo-sims/sim-101 new file mode 100644 index 00000000000000..fdc13db41792aa --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-101 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.768651 1.714942 LOGNORMAL 11.984523 2.871052 110 +LOGNORMAL 12.340375 1.681375 LOGNORMAL 13.083714 2.982825 21984 diff --git a/tools/linsched/tests/mcarlo-sims/sim-102 b/tools/linsched/tests/mcarlo-sims/sim-102 new file mode 100644 index 00000000000000..baea1a43326486 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-102 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.803441 3.438094 LOGNORMAL 11.442820 3.467710 12588 +LOGNORMAL 11.851976 1.152974 EXPONENTIAL 670127 2374 +LOGNORMAL 11.695568 3.416196 LOGNORMAL 11.767491 3.219652 1379 diff --git a/tools/linsched/tests/mcarlo-sims/sim-103 b/tools/linsched/tests/mcarlo-sims/sim-103 new file mode 100644 index 00000000000000..20c55bc9321e06 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-103 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.614152 1.052771 LOGNORMAL 11.205500 1.842424 17594 +LOGNORMAL 12.946268 2.929198 LOGNORMAL 13.403950 3.180993 25064 +LOGNORMAL 13.402803 1.912581 EXPONENTIAL 612309 31432 diff --git a/tools/linsched/tests/mcarlo-sims/sim-104 b/tools/linsched/tests/mcarlo-sims/sim-104 new file mode 100644 index 00000000000000..7bcfb0ccf7515b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-104 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.624441 1.985032 EXPONENTIAL 612704 27809 +LOGNORMAL 11.593908 1.807926 EXPONENTIAL 633975 3375 +LOGNORMAL 13.938223 3.715983 EXPONENTIAL 654816 17038 +LOGNORMAL 13.529645 3.740762 EXPONENTIAL 699784 14206 +LOGNORMAL 13.514340 1.520328 EXPONENTIAL 643028 21666 diff --git a/tools/linsched/tests/mcarlo-sims/sim-105 b/tools/linsched/tests/mcarlo-sims/sim-105 new file mode 100644 index 00000000000000..326f5a9f68f403 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-105 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.505667 3.737334 EXPONENTIAL 664545 4738 +LOGNORMAL 13.991985 1.292446 LOGNORMAL 13.506638 1.058547 23625 +LOGNORMAL 13.146121 1.849017 EXPONENTIAL 630580 23766 +LOGNORMAL 11.433339 3.131676 EXPONENTIAL 618493 8463 diff --git a/tools/linsched/tests/mcarlo-sims/sim-106 b/tools/linsched/tests/mcarlo-sims/sim-106 new file mode 100644 index 00000000000000..7074600a01a8a7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-106 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.962284 3.102385 EXPONENTIAL 623841 18415 +LOGNORMAL 13.212319 1.443213 LOGNORMAL 13.061678 1.628263 16224 +LOGNORMAL 11.847817 3.265085 EXPONENTIAL 689024 23428 +LOGNORMAL 12.020195 2.409059 EXPONENTIAL 696295 3056 diff --git a/tools/linsched/tests/mcarlo-sims/sim-107 b/tools/linsched/tests/mcarlo-sims/sim-107 new file mode 100644 index 00000000000000..68034016d39d40 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-107 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.982533 1.425853 EXPONENTIAL 639406 27300 +LOGNORMAL 12.959531 3.832968 LOGNORMAL 13.147746 2.159633 22421 diff --git a/tools/linsched/tests/mcarlo-sims/sim-108 b/tools/linsched/tests/mcarlo-sims/sim-108 new file mode 100644 index 00000000000000..1b838a6d45d81e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-108 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.024427 2.542640 EXPONENTIAL 611689 16815 +LOGNORMAL 11.681755 2.257244 LOGNORMAL 13.839954 2.102260 32234 +LOGNORMAL 13.652472 1.102196 LOGNORMAL 13.015959 1.215247 22592 diff --git a/tools/linsched/tests/mcarlo-sims/sim-109 b/tools/linsched/tests/mcarlo-sims/sim-109 new file mode 100644 index 00000000000000..1e251d01213252 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-109 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 11.641905 1.491746 LOGNORMAL 12.588533 2.473710 6411 +LOGNORMAL 12.451988 2.569954 LOGNORMAL 11.396861 2.041974 24787 +LOGNORMAL 13.048230 3.606937 EXPONENTIAL 651280 28957 +LOGNORMAL 11.381781 3.587565 LOGNORMAL 13.619206 3.000261 29587 diff --git a/tools/linsched/tests/mcarlo-sims/sim-11 b/tools/linsched/tests/mcarlo-sims/sim-11 new file mode 100644 index 00000000000000..7021d3d352c251 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-11 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.340210 1.906051 EXPONENTIAL 664791 14483 +LOGNORMAL 13.390452 1.321346 LOGNORMAL 13.476040 2.811709 32608 +LOGNORMAL 11.607804 1.354211 LOGNORMAL 12.074300 2.758589 10332 +LOGNORMAL 11.134121 2.170603 EXPONENTIAL 624133 18968 +LOGNORMAL 13.719673 2.539529 LOGNORMAL 12.444111 2.180563 8103 diff --git a/tools/linsched/tests/mcarlo-sims/sim-110 b/tools/linsched/tests/mcarlo-sims/sim-110 new file mode 100644 index 00000000000000..659d83b6c0a93b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-110 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.511723 3.527531 EXPONENTIAL 621896 14815 +LOGNORMAL 13.672368 2.486390 LOGNORMAL 13.083561 3.402729 14471 +LOGNORMAL 12.214337 1.368027 EXPONENTIAL 616995 32180 +LOGNORMAL 13.214985 1.251141 EXPONENTIAL 647782 1423 +LOGNORMAL 13.891006 2.140125 EXPONENTIAL 600922 15603 diff --git a/tools/linsched/tests/mcarlo-sims/sim-111 b/tools/linsched/tests/mcarlo-sims/sim-111 new file mode 100644 index 00000000000000..911b512dabe81d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-111 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.840356 2.870535 LOGNORMAL 12.737805 3.292964 10357 +LOGNORMAL 13.080183 3.643066 LOGNORMAL 13.674205 3.368601 25287 +LOGNORMAL 12.519059 1.817226 LOGNORMAL 13.049587 2.411467 10254 +LOGNORMAL 11.048645 2.569486 LOGNORMAL 13.572421 2.675198 22032 +LOGNORMAL 13.864265 2.700109 LOGNORMAL 12.290415 2.013141 27127 diff --git a/tools/linsched/tests/mcarlo-sims/sim-112 b/tools/linsched/tests/mcarlo-sims/sim-112 new file mode 100644 index 00000000000000..49086d38495242 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-112 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.405112 1.724368 LOGNORMAL 11.607648 1.744297 1222 +LOGNORMAL 13.956755 3.173015 EXPONENTIAL 633128 602 +LOGNORMAL 13.258868 3.794813 LOGNORMAL 13.216905 3.519442 7031 +LOGNORMAL 13.276810 2.341103 LOGNORMAL 13.047150 3.450543 26938 diff --git a/tools/linsched/tests/mcarlo-sims/sim-113 b/tools/linsched/tests/mcarlo-sims/sim-113 new file mode 100644 index 00000000000000..6d8f1519d33687 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-113 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.366775 1.393921 LOGNORMAL 11.114121 2.026439 28714 +LOGNORMAL 13.912093 2.542559 EXPONENTIAL 695525 9361 +LOGNORMAL 13.125930 1.507985 EXPONENTIAL 685742 27401 +LOGNORMAL 11.854921 2.655268 LOGNORMAL 13.748730 1.908422 19943 diff --git a/tools/linsched/tests/mcarlo-sims/sim-114 b/tools/linsched/tests/mcarlo-sims/sim-114 new file mode 100644 index 00000000000000..86bd83240244da --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-114 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 11.293675 1.801021 LOGNORMAL 11.108482 3.251401 8109 +LOGNORMAL 11.697343 3.248046 EXPONENTIAL 659762 20643 +LOGNORMAL 12.391001 3.561329 EXPONENTIAL 692874 7758 +LOGNORMAL 13.473242 3.786132 LOGNORMAL 11.507806 3.692418 17639 diff --git a/tools/linsched/tests/mcarlo-sims/sim-115 b/tools/linsched/tests/mcarlo-sims/sim-115 new file mode 100644 index 00000000000000..839af4a5e59d5c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-115 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.230768 2.519416 EXPONENTIAL 662508 28675 +LOGNORMAL 12.096642 3.260030 LOGNORMAL 12.112604 1.532879 1969 +LOGNORMAL 13.377833 2.242102 EXPONENTIAL 666256 10118 diff --git a/tools/linsched/tests/mcarlo-sims/sim-116 b/tools/linsched/tests/mcarlo-sims/sim-116 new file mode 100644 index 00000000000000..f6ca2b66d3c19d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-116 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.468014 3.915274 EXPONENTIAL 654734 4891 +LOGNORMAL 11.629073 1.821913 EXPONENTIAL 629685 8816 +LOGNORMAL 12.389020 3.260958 EXPONENTIAL 681397 1057 +LOGNORMAL 13.833537 2.263211 LOGNORMAL 12.722701 1.431239 13094 +LOGNORMAL 11.365208 1.057468 EXPONENTIAL 640620 19558 diff --git a/tools/linsched/tests/mcarlo-sims/sim-117 b/tools/linsched/tests/mcarlo-sims/sim-117 new file mode 100644 index 00000000000000..33d01a8206a482 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-117 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.775376 2.750168 EXPONENTIAL 638489 7878 +LOGNORMAL 13.507748 1.726104 EXPONENTIAL 657260 7971 +LOGNORMAL 12.529534 3.872052 EXPONENTIAL 611760 26589 diff --git a/tools/linsched/tests/mcarlo-sims/sim-118 b/tools/linsched/tests/mcarlo-sims/sim-118 new file mode 100644 index 00000000000000..c8fe226c04da24 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-118 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.286556 3.148819 LOGNORMAL 12.309609 3.599529 28144 +LOGNORMAL 13.211011 3.455169 EXPONENTIAL 674580 233 +LOGNORMAL 13.299617 1.666674 EXPONENTIAL 630349 5866 +LOGNORMAL 11.607201 3.222343 EXPONENTIAL 660969 3281 diff --git a/tools/linsched/tests/mcarlo-sims/sim-119 b/tools/linsched/tests/mcarlo-sims/sim-119 new file mode 100644 index 00000000000000..9dc9d721d0d7f1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-119 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.562652 1.498085 LOGNORMAL 13.455421 1.268672 18626 +LOGNORMAL 13.755274 3.897312 LOGNORMAL 11.354787 2.907762 21237 +LOGNORMAL 13.888751 3.231462 EXPONENTIAL 672267 8169 +LOGNORMAL 11.151312 3.093774 LOGNORMAL 13.619967 3.789025 10884 +LOGNORMAL 12.720918 1.467507 LOGNORMAL 12.676966 3.773054 26179 diff --git a/tools/linsched/tests/mcarlo-sims/sim-12 b/tools/linsched/tests/mcarlo-sims/sim-12 new file mode 100644 index 00000000000000..2c745473698997 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-12 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.214753 2.360411 LOGNORMAL 11.701440 3.110086 14035 +LOGNORMAL 12.550078 1.153322 LOGNORMAL 12.838804 2.777209 31910 +LOGNORMAL 13.518299 2.048990 EXPONENTIAL 613469 16630 +LOGNORMAL 12.621667 1.353301 LOGNORMAL 12.199655 3.609366 10886 diff --git a/tools/linsched/tests/mcarlo-sims/sim-120 b/tools/linsched/tests/mcarlo-sims/sim-120 new file mode 100644 index 00000000000000..8df70f77416311 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-120 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.238379 3.435301 LOGNORMAL 13.999876 1.918084 2162 +LOGNORMAL 12.627294 2.924048 EXPONENTIAL 671199 15147 +LOGNORMAL 13.626574 3.822172 EXPONENTIAL 692442 11027 diff --git a/tools/linsched/tests/mcarlo-sims/sim-121 b/tools/linsched/tests/mcarlo-sims/sim-121 new file mode 100644 index 00000000000000..7f2c36c67e7dfd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-121 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 12.852414 3.519622 LOGNORMAL 11.661201 1.801383 13844 +LOGNORMAL 11.534419 3.986796 EXPONENTIAL 674922 6854 +LOGNORMAL 12.328433 1.972876 EXPONENTIAL 659454 1668 +LOGNORMAL 12.863360 1.490406 LOGNORMAL 11.612712 2.858622 2771 +LOGNORMAL 12.089520 3.557505 LOGNORMAL 12.434913 3.584702 22179 diff --git a/tools/linsched/tests/mcarlo-sims/sim-122 b/tools/linsched/tests/mcarlo-sims/sim-122 new file mode 100644 index 00000000000000..d3859f3a98c02f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-122 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.183193 3.925393 LOGNORMAL 13.627244 3.093365 15880 +LOGNORMAL 11.659026 1.243826 EXPONENTIAL 604844 22625 +LOGNORMAL 13.374557 1.183336 LOGNORMAL 11.673824 3.952661 2529 +LOGNORMAL 12.497215 3.692544 EXPONENTIAL 627533 26131 +LOGNORMAL 11.643944 2.758565 LOGNORMAL 12.667571 1.859502 13091 diff --git a/tools/linsched/tests/mcarlo-sims/sim-123 b/tools/linsched/tests/mcarlo-sims/sim-123 new file mode 100644 index 00000000000000..3c54374c40ed42 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-123 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.327153 1.464604 LOGNORMAL 11.497446 3.579361 13871 +LOGNORMAL 11.095015 1.923555 LOGNORMAL 12.259977 3.430243 5587 +LOGNORMAL 12.612192 1.115151 EXPONENTIAL 668456 2459 +LOGNORMAL 13.410761 3.663314 LOGNORMAL 12.790026 1.974202 18794 +LOGNORMAL 12.339836 1.629217 EXPONENTIAL 631971 27857 diff --git a/tools/linsched/tests/mcarlo-sims/sim-124 b/tools/linsched/tests/mcarlo-sims/sim-124 new file mode 100644 index 00000000000000..8e650ab273a163 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-124 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.122473 2.400918 LOGNORMAL 11.593228 2.383954 1796 +LOGNORMAL 12.680030 1.262878 EXPONENTIAL 633727 25610 +LOGNORMAL 11.475910 1.613814 EXPONENTIAL 605129 9991 diff --git a/tools/linsched/tests/mcarlo-sims/sim-125 b/tools/linsched/tests/mcarlo-sims/sim-125 new file mode 100644 index 00000000000000..b629994085fd72 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-125 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.935920 1.013233 LOGNORMAL 11.061943 1.074251 5465 +LOGNORMAL 13.246482 2.622798 EXPONENTIAL 681286 23035 +LOGNORMAL 13.803461 3.775794 EXPONENTIAL 610566 15053 +LOGNORMAL 12.880027 2.617082 LOGNORMAL 11.292181 3.678282 4097 diff --git a/tools/linsched/tests/mcarlo-sims/sim-126 b/tools/linsched/tests/mcarlo-sims/sim-126 new file mode 100644 index 00000000000000..b64bb1d9ae66d1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-126 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 13.314748 3.976099 LOGNORMAL 13.517835 3.254020 28686 +LOGNORMAL 12.396866 3.121599 LOGNORMAL 12.040276 3.917617 659 +LOGNORMAL 12.491063 2.294169 LOGNORMAL 11.541665 2.762926 13504 +LOGNORMAL 13.895209 3.785004 LOGNORMAL 12.456966 2.225733 23538 diff --git a/tools/linsched/tests/mcarlo-sims/sim-127 b/tools/linsched/tests/mcarlo-sims/sim-127 new file mode 100644 index 00000000000000..b0486bf38d081e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-127 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.225813 3.241932 LOGNORMAL 11.006428 1.036367 1183 +LOGNORMAL 13.876462 3.691081 EXPONENTIAL 675242 7876 +LOGNORMAL 11.777103 2.770142 LOGNORMAL 12.337432 3.221085 10919 +LOGNORMAL 13.850856 2.341129 EXPONENTIAL 681923 4049 diff --git a/tools/linsched/tests/mcarlo-sims/sim-128 b/tools/linsched/tests/mcarlo-sims/sim-128 new file mode 100644 index 00000000000000..3335127d3a571c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-128 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.898343 3.455999 EXPONENTIAL 666819 28055 +LOGNORMAL 13.347401 3.767489 EXPONENTIAL 649906 31583 +LOGNORMAL 12.174858 3.840060 LOGNORMAL 11.939326 2.246336 15750 diff --git a/tools/linsched/tests/mcarlo-sims/sim-129 b/tools/linsched/tests/mcarlo-sims/sim-129 new file mode 100644 index 00000000000000..fe4dfdc37c4a93 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-129 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.524594 3.851140 LOGNORMAL 11.206640 2.994379 19425 +LOGNORMAL 13.294235 1.202494 LOGNORMAL 13.307515 2.405622 22922 +LOGNORMAL 12.652424 2.288731 LOGNORMAL 12.202441 2.425040 9730 +LOGNORMAL 11.266546 1.846774 LOGNORMAL 12.958360 2.158462 5300 +LOGNORMAL 13.090166 3.417938 EXPONENTIAL 606406 22088 diff --git a/tools/linsched/tests/mcarlo-sims/sim-13 b/tools/linsched/tests/mcarlo-sims/sim-13 new file mode 100644 index 00000000000000..4a8524d6d74b8f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-13 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 13.680346 1.572170 LOGNORMAL 12.472888 2.820294 32258 +LOGNORMAL 12.291553 3.127483 LOGNORMAL 13.170333 3.782667 24036 +LOGNORMAL 13.060818 2.168748 LOGNORMAL 13.893187 2.793126 28698 diff --git a/tools/linsched/tests/mcarlo-sims/sim-130 b/tools/linsched/tests/mcarlo-sims/sim-130 new file mode 100644 index 00000000000000..42e77662e29130 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-130 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.729539 2.360110 EXPONENTIAL 674734 2755 +LOGNORMAL 12.975311 2.050387 EXPONENTIAL 660716 24933 diff --git a/tools/linsched/tests/mcarlo-sims/sim-131 b/tools/linsched/tests/mcarlo-sims/sim-131 new file mode 100644 index 00000000000000..2efe46b7379757 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-131 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.333251 1.941330 EXPONENTIAL 638474 25255 +LOGNORMAL 11.133468 3.192735 LOGNORMAL 12.761821 1.932120 7375 +LOGNORMAL 13.360317 1.847196 EXPONENTIAL 610071 12592 diff --git a/tools/linsched/tests/mcarlo-sims/sim-132 b/tools/linsched/tests/mcarlo-sims/sim-132 new file mode 100644 index 00000000000000..5a41d3cc6900dc --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-132 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.899706 2.356042 EXPONENTIAL 679754 14803 +LOGNORMAL 13.180713 1.244647 EXPONENTIAL 631520 29513 +LOGNORMAL 11.002268 3.114152 LOGNORMAL 13.545649 2.723032 27155 +LOGNORMAL 11.035846 3.460076 LOGNORMAL 12.781097 1.903376 19128 diff --git a/tools/linsched/tests/mcarlo-sims/sim-133 b/tools/linsched/tests/mcarlo-sims/sim-133 new file mode 100644 index 00000000000000..0369d27eca806d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-133 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 12.239230 2.738820 EXPONENTIAL 699681 17037 +LOGNORMAL 11.528704 3.923858 EXPONENTIAL 621254 25151 +LOGNORMAL 13.888951 3.601465 LOGNORMAL 12.239500 1.280948 23469 +LOGNORMAL 11.559006 3.211908 EXPONENTIAL 688416 21571 +LOGNORMAL 12.360098 3.169233 EXPONENTIAL 695772 7501 diff --git a/tools/linsched/tests/mcarlo-sims/sim-134 b/tools/linsched/tests/mcarlo-sims/sim-134 new file mode 100644 index 00000000000000..3c0f72dfa97ac8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-134 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.985864 3.417303 EXPONENTIAL 604831 27238 +LOGNORMAL 12.265448 2.385957 EXPONENTIAL 674596 2973 diff --git a/tools/linsched/tests/mcarlo-sims/sim-135 b/tools/linsched/tests/mcarlo-sims/sim-135 new file mode 100644 index 00000000000000..c54901ae4a626b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-135 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.489475 2.609529 EXPONENTIAL 685151 6321 +LOGNORMAL 12.814918 3.335017 EXPONENTIAL 630342 22037 +LOGNORMAL 13.113416 1.188970 EXPONENTIAL 609393 12213 +LOGNORMAL 12.039656 2.498951 EXPONENTIAL 639866 12973 +LOGNORMAL 13.552430 2.688508 LOGNORMAL 12.735555 1.473169 14479 diff --git a/tools/linsched/tests/mcarlo-sims/sim-136 b/tools/linsched/tests/mcarlo-sims/sim-136 new file mode 100644 index 00000000000000..8d315d40fbb413 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-136 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.665090 1.173254 LOGNORMAL 11.961748 1.092144 15510 +LOGNORMAL 12.782111 3.942563 EXPONENTIAL 640010 22476 +LOGNORMAL 12.809758 3.609133 EXPONENTIAL 645526 13062 +LOGNORMAL 13.962678 3.733613 EXPONENTIAL 673689 30211 diff --git a/tools/linsched/tests/mcarlo-sims/sim-137 b/tools/linsched/tests/mcarlo-sims/sim-137 new file mode 100644 index 00000000000000..29bbad58eb791c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-137 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.625307 2.536029 EXPONENTIAL 697551 8248 +LOGNORMAL 13.334888 3.463478 EXPONENTIAL 616241 2019 diff --git a/tools/linsched/tests/mcarlo-sims/sim-138 b/tools/linsched/tests/mcarlo-sims/sim-138 new file mode 100644 index 00000000000000..dc1a3d15bcab72 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-138 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 12.379096 1.472631 LOGNORMAL 11.398126 2.297399 3088 +LOGNORMAL 13.608425 1.795316 EXPONENTIAL 649121 8857 +LOGNORMAL 12.825354 1.717025 LOGNORMAL 11.916955 1.259465 2927 diff --git a/tools/linsched/tests/mcarlo-sims/sim-139 b/tools/linsched/tests/mcarlo-sims/sim-139 new file mode 100644 index 00000000000000..cae2507431fbb4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-139 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.427850 1.869778 EXPONENTIAL 600579 28612 +LOGNORMAL 12.371993 2.089891 EXPONENTIAL 655426 1829 diff --git a/tools/linsched/tests/mcarlo-sims/sim-14 b/tools/linsched/tests/mcarlo-sims/sim-14 new file mode 100644 index 00000000000000..cd99ef7a9e454a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-14 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.580285 1.857965 LOGNORMAL 13.060757 1.151281 1014 +LOGNORMAL 12.061021 1.586312 LOGNORMAL 12.448778 2.616889 23365 diff --git a/tools/linsched/tests/mcarlo-sims/sim-140 b/tools/linsched/tests/mcarlo-sims/sim-140 new file mode 100644 index 00000000000000..cd7493ab6ad889 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-140 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.520403 3.407908 EXPONENTIAL 630543 2128 +LOGNORMAL 13.650612 2.841619 EXPONENTIAL 633830 21909 +LOGNORMAL 11.414002 2.136050 LOGNORMAL 13.873506 2.007998 19605 +LOGNORMAL 12.728693 3.149732 LOGNORMAL 12.584198 1.610384 28151 diff --git a/tools/linsched/tests/mcarlo-sims/sim-141 b/tools/linsched/tests/mcarlo-sims/sim-141 new file mode 100644 index 00000000000000..3075c92684f6a8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-141 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.810737 1.056193 EXPONENTIAL 676344 8407 +LOGNORMAL 12.987553 3.800907 LOGNORMAL 13.373816 3.723091 12872 +LOGNORMAL 12.366205 3.803950 LOGNORMAL 11.064077 3.935465 26128 +LOGNORMAL 11.053776 1.817782 LOGNORMAL 12.048750 2.348905 26208 diff --git a/tools/linsched/tests/mcarlo-sims/sim-142 b/tools/linsched/tests/mcarlo-sims/sim-142 new file mode 100644 index 00000000000000..383862bd3f084f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-142 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.232553 3.520605 LOGNORMAL 12.876313 3.189280 14781 +LOGNORMAL 12.242421 2.371700 EXPONENTIAL 683646 17766 diff --git a/tools/linsched/tests/mcarlo-sims/sim-143 b/tools/linsched/tests/mcarlo-sims/sim-143 new file mode 100644 index 00000000000000..25757e77c11342 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-143 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.479253 2.809806 EXPONENTIAL 617170 17525 +LOGNORMAL 11.623059 2.756164 LOGNORMAL 11.416462 1.481444 32034 +LOGNORMAL 12.743116 2.554591 LOGNORMAL 12.094750 1.460983 5444 diff --git a/tools/linsched/tests/mcarlo-sims/sim-144 b/tools/linsched/tests/mcarlo-sims/sim-144 new file mode 100644 index 00000000000000..aa1251901a647b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-144 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.209289 1.527359 LOGNORMAL 13.640888 1.407283 16002 +LOGNORMAL 11.925919 1.914451 LOGNORMAL 11.370333 3.189143 28304 diff --git a/tools/linsched/tests/mcarlo-sims/sim-145 b/tools/linsched/tests/mcarlo-sims/sim-145 new file mode 100644 index 00000000000000..d9bb74beac0f83 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-145 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 11.939573 3.398945 EXPONENTIAL 629596 22315 +LOGNORMAL 13.042636 2.588067 EXPONENTIAL 630598 6493 +LOGNORMAL 13.827580 1.133715 LOGNORMAL 12.220933 1.214186 31281 diff --git a/tools/linsched/tests/mcarlo-sims/sim-146 b/tools/linsched/tests/mcarlo-sims/sim-146 new file mode 100644 index 00000000000000..a35ad1f5122636 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-146 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.130561 1.341438 EXPONENTIAL 651119 13511 +LOGNORMAL 11.845423 2.020509 EXPONENTIAL 670377 12251 +LOGNORMAL 13.120005 3.919706 EXPONENTIAL 613284 8012 +LOGNORMAL 12.532996 2.057836 LOGNORMAL 13.563097 1.970937 30330 +LOGNORMAL 13.211319 2.640742 LOGNORMAL 12.073826 3.797716 86 diff --git a/tools/linsched/tests/mcarlo-sims/sim-147 b/tools/linsched/tests/mcarlo-sims/sim-147 new file mode 100644 index 00000000000000..bc81dba7526c7d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-147 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.150073 2.274536 EXPONENTIAL 624541 26191 +LOGNORMAL 11.776508 1.772597 LOGNORMAL 11.236748 2.021228 31172 +LOGNORMAL 11.199031 1.116428 LOGNORMAL 13.163809 2.134718 21856 +LOGNORMAL 13.537674 3.682027 EXPONENTIAL 646878 13381 +LOGNORMAL 11.262025 3.852086 LOGNORMAL 12.036025 1.467499 25336 diff --git a/tools/linsched/tests/mcarlo-sims/sim-148 b/tools/linsched/tests/mcarlo-sims/sim-148 new file mode 100644 index 00000000000000..821d209625962b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-148 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.451196 2.257026 LOGNORMAL 13.267190 2.657134 3647 +LOGNORMAL 12.789158 2.372780 LOGNORMAL 13.715483 1.130052 27012 diff --git a/tools/linsched/tests/mcarlo-sims/sim-149 b/tools/linsched/tests/mcarlo-sims/sim-149 new file mode 100644 index 00000000000000..97f5bfbb960a6c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-149 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.376232 2.323305 EXPONENTIAL 671974 2480 +LOGNORMAL 12.481913 1.512540 LOGNORMAL 13.374098 2.472867 18680 diff --git a/tools/linsched/tests/mcarlo-sims/sim-15 b/tools/linsched/tests/mcarlo-sims/sim-15 new file mode 100644 index 00000000000000..9955ded49e1ffe --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-15 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.377745 2.758825 LOGNORMAL 12.516975 2.790764 13070 +LOGNORMAL 11.132464 1.324358 EXPONENTIAL 629898 5032 +LOGNORMAL 13.936647 1.234461 LOGNORMAL 12.952357 3.267444 15517 diff --git a/tools/linsched/tests/mcarlo-sims/sim-150 b/tools/linsched/tests/mcarlo-sims/sim-150 new file mode 100644 index 00000000000000..32f6c24635edb2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-150 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 13.030084 1.621827 LOGNORMAL 12.607653 2.820612 24923 +LOGNORMAL 13.465785 1.453997 LOGNORMAL 13.522805 2.780476 30359 +LOGNORMAL 13.338551 2.024149 EXPONENTIAL 676234 25615 +LOGNORMAL 12.274920 2.575881 EXPONENTIAL 608808 17602 +LOGNORMAL 11.280548 3.168385 EXPONENTIAL 661867 23277 diff --git a/tools/linsched/tests/mcarlo-sims/sim-151 b/tools/linsched/tests/mcarlo-sims/sim-151 new file mode 100644 index 00000000000000..f0a03c5e2eb359 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-151 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.712239 2.598971 EXPONENTIAL 649595 8833 +LOGNORMAL 11.209326 3.146394 EXPONENTIAL 666252 30446 +LOGNORMAL 12.749017 2.721514 LOGNORMAL 13.381825 3.333418 10519 +LOGNORMAL 11.063999 2.627045 LOGNORMAL 11.975493 1.116562 28896 diff --git a/tools/linsched/tests/mcarlo-sims/sim-152 b/tools/linsched/tests/mcarlo-sims/sim-152 new file mode 100644 index 00000000000000..ac3423b8e6a732 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-152 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.888709 2.529085 LOGNORMAL 13.991952 3.735639 32076 +LOGNORMAL 11.394448 3.493977 EXPONENTIAL 668912 10616 +LOGNORMAL 12.327948 2.825038 LOGNORMAL 11.975886 1.721564 10859 +LOGNORMAL 12.753775 1.688021 EXPONENTIAL 672259 30762 +LOGNORMAL 12.442935 3.408360 LOGNORMAL 11.339181 1.617507 15238 diff --git a/tools/linsched/tests/mcarlo-sims/sim-153 b/tools/linsched/tests/mcarlo-sims/sim-153 new file mode 100644 index 00000000000000..e7b82799957eda --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-153 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.743544 2.737195 LOGNORMAL 11.596999 2.760382 26908 +LOGNORMAL 13.919304 3.740892 LOGNORMAL 12.087983 1.733797 26274 +LOGNORMAL 11.313760 3.360153 EXPONENTIAL 670625 17881 diff --git a/tools/linsched/tests/mcarlo-sims/sim-154 b/tools/linsched/tests/mcarlo-sims/sim-154 new file mode 100644 index 00000000000000..2d7bf53ef331b4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-154 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.490486 3.596844 LOGNORMAL 12.944921 1.294728 30343 +LOGNORMAL 13.224294 1.711431 LOGNORMAL 12.398944 2.057549 13899 +LOGNORMAL 13.221983 1.874521 LOGNORMAL 12.930448 1.046006 17774 +LOGNORMAL 13.670048 2.488977 LOGNORMAL 12.284869 1.797327 31659 +LOGNORMAL 11.379509 1.409620 EXPONENTIAL 693878 12600 diff --git a/tools/linsched/tests/mcarlo-sims/sim-155 b/tools/linsched/tests/mcarlo-sims/sim-155 new file mode 100644 index 00000000000000..f6bcf71860660a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-155 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.442877 1.431316 EXPONENTIAL 642066 13787 +LOGNORMAL 13.758256 3.007715 LOGNORMAL 11.994214 3.760086 28862 +LOGNORMAL 13.938946 3.861843 LOGNORMAL 13.620269 2.858329 31928 diff --git a/tools/linsched/tests/mcarlo-sims/sim-156 b/tools/linsched/tests/mcarlo-sims/sim-156 new file mode 100644 index 00000000000000..d0bb960258b3c8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-156 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.940325 1.037608 LOGNORMAL 11.936772 1.327420 11320 +LOGNORMAL 12.715624 2.489484 LOGNORMAL 13.765059 3.338949 23838 +LOGNORMAL 12.737790 3.039178 LOGNORMAL 13.258007 1.322291 6848 +LOGNORMAL 12.213221 3.597678 LOGNORMAL 13.012888 3.608450 20859 +LOGNORMAL 12.497952 1.079698 LOGNORMAL 13.046777 3.188642 475 diff --git a/tools/linsched/tests/mcarlo-sims/sim-157 b/tools/linsched/tests/mcarlo-sims/sim-157 new file mode 100644 index 00000000000000..327eb440c8cd10 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-157 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 13.289673 2.534074 EXPONENTIAL 675098 30642 +LOGNORMAL 13.322070 1.023857 EXPONENTIAL 653779 27897 diff --git a/tools/linsched/tests/mcarlo-sims/sim-158 b/tools/linsched/tests/mcarlo-sims/sim-158 new file mode 100644 index 00000000000000..b45b2f3f669c7d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-158 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.410336 3.521471 EXPONENTIAL 600964 8251 +LOGNORMAL 12.991844 3.915508 LOGNORMAL 13.050441 1.762836 7847 +LOGNORMAL 11.606827 2.945696 EXPONENTIAL 663962 16764 +LOGNORMAL 12.332963 3.112335 LOGNORMAL 12.519286 2.634577 30789 +LOGNORMAL 13.192618 3.337830 EXPONENTIAL 611814 21512 diff --git a/tools/linsched/tests/mcarlo-sims/sim-159 b/tools/linsched/tests/mcarlo-sims/sim-159 new file mode 100644 index 00000000000000..22c63cda2f47bb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-159 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.820769 3.671585 EXPONENTIAL 667310 20980 +LOGNORMAL 11.918987 2.407174 EXPONENTIAL 642490 1340 +LOGNORMAL 11.789096 3.341194 LOGNORMAL 12.515097 1.227988 16936 +LOGNORMAL 11.602676 2.181941 EXPONENTIAL 642911 27523 +LOGNORMAL 13.087996 2.955917 EXPONENTIAL 649846 13470 diff --git a/tools/linsched/tests/mcarlo-sims/sim-16 b/tools/linsched/tests/mcarlo-sims/sim-16 new file mode 100644 index 00000000000000..632cc8c318f3cf --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-16 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.628337 1.454058 EXPONENTIAL 681336 7389 +LOGNORMAL 11.906863 2.639440 EXPONENTIAL 659810 17214 +LOGNORMAL 13.347593 3.997440 LOGNORMAL 12.714682 1.658437 15723 +LOGNORMAL 12.263448 1.771341 LOGNORMAL 13.206921 3.727689 22370 diff --git a/tools/linsched/tests/mcarlo-sims/sim-160 b/tools/linsched/tests/mcarlo-sims/sim-160 new file mode 100644 index 00000000000000..358344024eafe9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-160 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.256371 1.829860 EXPONENTIAL 638276 7958 +LOGNORMAL 11.659377 1.151827 EXPONENTIAL 606784 10247 +LOGNORMAL 13.731089 2.411737 EXPONENTIAL 693133 15831 diff --git a/tools/linsched/tests/mcarlo-sims/sim-161 b/tools/linsched/tests/mcarlo-sims/sim-161 new file mode 100644 index 00000000000000..167d0593ae6ce6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-161 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.921907 3.488323 LOGNORMAL 12.192874 3.638420 24321 +LOGNORMAL 13.116220 3.306820 EXPONENTIAL 621292 3556 +LOGNORMAL 11.893851 2.946179 EXPONENTIAL 654776 12096 diff --git a/tools/linsched/tests/mcarlo-sims/sim-162 b/tools/linsched/tests/mcarlo-sims/sim-162 new file mode 100644 index 00000000000000..57461673b8368f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-162 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.516013 2.628036 LOGNORMAL 11.863419 1.476380 4619 +LOGNORMAL 13.038515 2.318946 EXPONENTIAL 627444 25030 +LOGNORMAL 13.128742 3.759102 LOGNORMAL 12.813917 1.500989 19363 diff --git a/tools/linsched/tests/mcarlo-sims/sim-163 b/tools/linsched/tests/mcarlo-sims/sim-163 new file mode 100644 index 00000000000000..a616fa269bd7b9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-163 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.826929 1.195284 LOGNORMAL 12.377947 3.162779 24236 +LOGNORMAL 13.618942 1.556159 EXPONENTIAL 663258 14319 +LOGNORMAL 13.565533 3.908099 EXPONENTIAL 653732 26308 +LOGNORMAL 13.031237 3.005262 LOGNORMAL 11.685610 1.052420 3684 +LOGNORMAL 11.640159 2.145515 EXPONENTIAL 619915 448 diff --git a/tools/linsched/tests/mcarlo-sims/sim-164 b/tools/linsched/tests/mcarlo-sims/sim-164 new file mode 100644 index 00000000000000..85d500e5ac81b3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-164 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.690273 1.419977 EXPONENTIAL 679646 5383 +LOGNORMAL 11.717051 1.475826 LOGNORMAL 12.738854 2.915138 18770 +LOGNORMAL 12.181459 3.779431 EXPONENTIAL 670937 32683 +LOGNORMAL 13.790887 2.429545 LOGNORMAL 13.887780 1.923531 27797 diff --git a/tools/linsched/tests/mcarlo-sims/sim-165 b/tools/linsched/tests/mcarlo-sims/sim-165 new file mode 100644 index 00000000000000..b02eec97ab4945 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-165 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.000327 3.487983 EXPONENTIAL 625840 31504 +LOGNORMAL 11.481761 3.957489 EXPONENTIAL 642203 5482 +LOGNORMAL 13.976137 1.929083 LOGNORMAL 11.595589 3.067708 13023 +LOGNORMAL 11.529784 1.074734 EXPONENTIAL 668240 798 diff --git a/tools/linsched/tests/mcarlo-sims/sim-166 b/tools/linsched/tests/mcarlo-sims/sim-166 new file mode 100644 index 00000000000000..c28ba716fa4219 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-166 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.128809 2.896250 EXPONENTIAL 662456 29619 +LOGNORMAL 13.993822 2.163247 EXPONENTIAL 639447 1852 +LOGNORMAL 12.779648 1.545069 EXPONENTIAL 628586 16466 +LOGNORMAL 13.996847 2.008781 LOGNORMAL 13.282263 3.996073 2491 diff --git a/tools/linsched/tests/mcarlo-sims/sim-167 b/tools/linsched/tests/mcarlo-sims/sim-167 new file mode 100644 index 00000000000000..6e48fe85dc81f3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-167 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.434776 1.280815 EXPONENTIAL 638718 12064 +LOGNORMAL 11.101574 1.152777 EXPONENTIAL 623329 8650 +LOGNORMAL 12.410326 1.347733 LOGNORMAL 11.143698 1.130922 7136 +LOGNORMAL 13.985938 1.651553 EXPONENTIAL 625870 26576 diff --git a/tools/linsched/tests/mcarlo-sims/sim-168 b/tools/linsched/tests/mcarlo-sims/sim-168 new file mode 100644 index 00000000000000..baaf1352211674 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-168 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.733093 3.098434 EXPONENTIAL 648390 1645 +LOGNORMAL 11.551131 2.857383 LOGNORMAL 13.847207 1.007173 9679 +LOGNORMAL 11.172481 1.885091 LOGNORMAL 11.100429 2.913856 29934 +LOGNORMAL 12.604083 2.823673 EXPONENTIAL 617888 24280 +LOGNORMAL 13.628051 1.656518 LOGNORMAL 12.824264 1.406773 32318 diff --git a/tools/linsched/tests/mcarlo-sims/sim-169 b/tools/linsched/tests/mcarlo-sims/sim-169 new file mode 100644 index 00000000000000..8b0eee1e7acf81 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-169 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 11.933194 1.198129 LOGNORMAL 13.850515 2.612955 28754 +LOGNORMAL 12.080782 3.709163 LOGNORMAL 11.046588 1.000421 18456 +LOGNORMAL 12.150245 1.164548 LOGNORMAL 13.674625 1.420786 21071 +LOGNORMAL 13.648730 1.212937 EXPONENTIAL 675182 27499 +LOGNORMAL 11.292950 1.607592 EXPONENTIAL 610115 6283 diff --git a/tools/linsched/tests/mcarlo-sims/sim-17 b/tools/linsched/tests/mcarlo-sims/sim-17 new file mode 100644 index 00000000000000..31ea07111b03ba --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-17 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.040562 3.717882 LOGNORMAL 13.023458 1.264833 7781 +LOGNORMAL 11.896083 1.462201 LOGNORMAL 12.030865 1.744386 5604 +LOGNORMAL 12.132220 1.214231 EXPONENTIAL 699740 21089 diff --git a/tools/linsched/tests/mcarlo-sims/sim-170 b/tools/linsched/tests/mcarlo-sims/sim-170 new file mode 100644 index 00000000000000..564a6bb1326ca8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-170 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.634468 1.499699 LOGNORMAL 12.570667 2.205904 29416 +LOGNORMAL 11.902749 2.505513 EXPONENTIAL 698026 13209 +LOGNORMAL 13.562319 3.891641 EXPONENTIAL 651084 15158 +LOGNORMAL 12.581400 2.593236 EXPONENTIAL 630686 32198 +LOGNORMAL 12.754131 1.674935 LOGNORMAL 12.835148 1.325505 30667 diff --git a/tools/linsched/tests/mcarlo-sims/sim-171 b/tools/linsched/tests/mcarlo-sims/sim-171 new file mode 100644 index 00000000000000..92d547e80793df --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-171 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.069689 3.266404 EXPONENTIAL 671091 6927 +LOGNORMAL 11.412916 1.880433 LOGNORMAL 13.187307 1.067139 12879 diff --git a/tools/linsched/tests/mcarlo-sims/sim-172 b/tools/linsched/tests/mcarlo-sims/sim-172 new file mode 100644 index 00000000000000..b3b157868756ed --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-172 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.344699 2.361916 EXPONENTIAL 666052 15163 +LOGNORMAL 11.561162 3.448788 LOGNORMAL 13.238187 1.211017 18516 +LOGNORMAL 12.697426 2.643864 LOGNORMAL 13.787766 3.985107 15068 +LOGNORMAL 12.187821 2.700681 EXPONENTIAL 607350 1159 +LOGNORMAL 13.734682 2.796387 EXPONENTIAL 659117 32618 diff --git a/tools/linsched/tests/mcarlo-sims/sim-173 b/tools/linsched/tests/mcarlo-sims/sim-173 new file mode 100644 index 00000000000000..81bb2faf461734 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-173 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.319467 1.288869 LOGNORMAL 13.159072 3.524741 30363 +LOGNORMAL 13.645136 3.795604 EXPONENTIAL 677336 25387 +LOGNORMAL 12.459432 1.675022 EXPONENTIAL 664410 18209 diff --git a/tools/linsched/tests/mcarlo-sims/sim-174 b/tools/linsched/tests/mcarlo-sims/sim-174 new file mode 100644 index 00000000000000..0e8920d584632d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-174 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 11.095627 3.199750 EXPONENTIAL 679032 21307 +LOGNORMAL 11.296866 1.434605 LOGNORMAL 13.101598 3.565556 5765 +LOGNORMAL 11.984979 1.538342 EXPONENTIAL 619202 13718 diff --git a/tools/linsched/tests/mcarlo-sims/sim-175 b/tools/linsched/tests/mcarlo-sims/sim-175 new file mode 100644 index 00000000000000..ac6f7025fcea72 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-175 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.450450 3.712741 EXPONENTIAL 643175 17500 +LOGNORMAL 12.996461 3.524759 EXPONENTIAL 653321 9549 +LOGNORMAL 13.219368 2.914799 EXPONENTIAL 685439 2217 diff --git a/tools/linsched/tests/mcarlo-sims/sim-176 b/tools/linsched/tests/mcarlo-sims/sim-176 new file mode 100644 index 00000000000000..d00b688f273489 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-176 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.794182 3.812299 LOGNORMAL 11.389976 3.331695 11352 +LOGNORMAL 11.429324 1.654551 EXPONENTIAL 683596 2652 +LOGNORMAL 13.412906 3.713395 LOGNORMAL 12.774962 3.786304 16219 +LOGNORMAL 12.075287 1.347776 LOGNORMAL 11.361481 1.409715 12486 diff --git a/tools/linsched/tests/mcarlo-sims/sim-177 b/tools/linsched/tests/mcarlo-sims/sim-177 new file mode 100644 index 00000000000000..2dd2b2fec110f8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-177 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.656832 2.373542 LOGNORMAL 11.957884 2.163066 22627 +LOGNORMAL 13.796943 2.228124 LOGNORMAL 12.723749 1.046933 30890 diff --git a/tools/linsched/tests/mcarlo-sims/sim-178 b/tools/linsched/tests/mcarlo-sims/sim-178 new file mode 100644 index 00000000000000..cde877d77e9b1f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-178 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.912582 1.759777 EXPONENTIAL 656018 25220 +LOGNORMAL 11.355384 3.931298 EXPONENTIAL 643738 4914 +LOGNORMAL 13.935127 2.671793 EXPONENTIAL 627988 689 +LOGNORMAL 12.530226 3.502146 EXPONENTIAL 660210 32476 +LOGNORMAL 11.747990 2.472439 EXPONENTIAL 620385 18054 diff --git a/tools/linsched/tests/mcarlo-sims/sim-179 b/tools/linsched/tests/mcarlo-sims/sim-179 new file mode 100644 index 00000000000000..3f2571fbfa63b9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-179 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.995985 2.520035 EXPONENTIAL 601868 17120 +LOGNORMAL 11.674570 1.490012 LOGNORMAL 13.982908 1.742766 12582 +LOGNORMAL 12.635318 2.781445 EXPONENTIAL 600746 510 +LOGNORMAL 13.727638 1.407235 EXPONENTIAL 621014 31473 +LOGNORMAL 13.885253 1.448980 LOGNORMAL 11.900655 3.304390 14375 diff --git a/tools/linsched/tests/mcarlo-sims/sim-18 b/tools/linsched/tests/mcarlo-sims/sim-18 new file mode 100644 index 00000000000000..bae404ca2965de --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-18 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 12.484446 2.076030 EXPONENTIAL 614133 7373 +LOGNORMAL 13.787243 1.199272 EXPONENTIAL 662408 11774 +LOGNORMAL 13.395419 3.808615 LOGNORMAL 11.077940 2.931659 19967 +LOGNORMAL 11.509871 2.396300 EXPONENTIAL 625311 28427 +LOGNORMAL 12.494708 3.557501 LOGNORMAL 11.619048 1.346730 5311 diff --git a/tools/linsched/tests/mcarlo-sims/sim-180 b/tools/linsched/tests/mcarlo-sims/sim-180 new file mode 100644 index 00000000000000..8a2db3a60cc2ad --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-180 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.176034 3.604052 EXPONENTIAL 641153 9017 +LOGNORMAL 13.603684 3.109525 LOGNORMAL 11.421630 1.337871 4213 +LOGNORMAL 11.063205 1.293119 EXPONENTIAL 680508 6067 +LOGNORMAL 13.940390 1.131703 EXPONENTIAL 649378 14308 diff --git a/tools/linsched/tests/mcarlo-sims/sim-181 b/tools/linsched/tests/mcarlo-sims/sim-181 new file mode 100644 index 00000000000000..631d559fa7d61f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-181 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 13.254279 1.662046 EXPONENTIAL 653648 22647 +LOGNORMAL 12.936120 3.375104 EXPONENTIAL 620715 4066 diff --git a/tools/linsched/tests/mcarlo-sims/sim-182 b/tools/linsched/tests/mcarlo-sims/sim-182 new file mode 100644 index 00000000000000..1ece1e1df284db --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-182 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.128711 2.246217 EXPONENTIAL 660947 9482 +LOGNORMAL 12.152464 2.460406 EXPONENTIAL 686549 22711 +LOGNORMAL 11.644395 1.341026 LOGNORMAL 12.918000 1.827551 8122 +LOGNORMAL 11.068325 3.342499 LOGNORMAL 13.946079 3.745110 6100 +LOGNORMAL 13.572435 2.910998 LOGNORMAL 13.006022 2.210185 11883 diff --git a/tools/linsched/tests/mcarlo-sims/sim-183 b/tools/linsched/tests/mcarlo-sims/sim-183 new file mode 100644 index 00000000000000..15608595ca0e10 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-183 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.258178 2.203091 LOGNORMAL 13.562175 1.481065 320 +LOGNORMAL 11.965124 3.842556 LOGNORMAL 12.790367 1.698338 23568 diff --git a/tools/linsched/tests/mcarlo-sims/sim-184 b/tools/linsched/tests/mcarlo-sims/sim-184 new file mode 100644 index 00000000000000..e7173145ca7738 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-184 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.545514 1.449981 EXPONENTIAL 639514 29920 +LOGNORMAL 11.048584 1.556011 LOGNORMAL 12.218670 2.192542 18582 diff --git a/tools/linsched/tests/mcarlo-sims/sim-185 b/tools/linsched/tests/mcarlo-sims/sim-185 new file mode 100644 index 00000000000000..6a319fc92e0d9f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-185 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.893293 3.569805 LOGNORMAL 11.174080 1.767471 1665 +LOGNORMAL 11.497577 2.781702 LOGNORMAL 13.506168 2.171327 13339 +LOGNORMAL 12.827640 1.152841 LOGNORMAL 13.170080 2.537504 4273 diff --git a/tools/linsched/tests/mcarlo-sims/sim-186 b/tools/linsched/tests/mcarlo-sims/sim-186 new file mode 100644 index 00000000000000..23ad769cc2a1ce --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-186 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 12.298462 2.255572 EXPONENTIAL 678011 10901 +LOGNORMAL 13.985048 1.706984 EXPONENTIAL 680395 13970 +LOGNORMAL 12.276086 1.183120 EXPONENTIAL 675262 26316 diff --git a/tools/linsched/tests/mcarlo-sims/sim-187 b/tools/linsched/tests/mcarlo-sims/sim-187 new file mode 100644 index 00000000000000..e1f45ad4416da9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-187 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.827712 1.361796 LOGNORMAL 11.063605 2.006594 29289 +LOGNORMAL 12.215042 1.207719 LOGNORMAL 12.034554 3.742144 27310 +LOGNORMAL 11.342184 1.079886 EXPONENTIAL 683364 7123 +LOGNORMAL 13.444671 3.581159 EXPONENTIAL 627142 3349 diff --git a/tools/linsched/tests/mcarlo-sims/sim-188 b/tools/linsched/tests/mcarlo-sims/sim-188 new file mode 100644 index 00000000000000..7c8619e432bb8c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-188 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.304016 1.602064 LOGNORMAL 12.072308 2.280199 4036 +LOGNORMAL 11.398092 1.732233 LOGNORMAL 13.917960 2.158827 24022 +LOGNORMAL 11.400262 2.203576 EXPONENTIAL 670935 18857 +LOGNORMAL 13.181490 2.296143 EXPONENTIAL 611779 5727 diff --git a/tools/linsched/tests/mcarlo-sims/sim-189 b/tools/linsched/tests/mcarlo-sims/sim-189 new file mode 100644 index 00000000000000..d446d2a683533d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-189 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.534066 1.046206 LOGNORMAL 13.905360 3.377791 9538 +LOGNORMAL 12.825279 3.458827 LOGNORMAL 13.092203 1.651980 18483 +LOGNORMAL 12.345197 1.725221 LOGNORMAL 11.654641 2.546757 10987 +LOGNORMAL 12.564951 2.134115 LOGNORMAL 13.902405 1.718187 19470 +LOGNORMAL 12.162618 2.127646 EXPONENTIAL 676803 31777 diff --git a/tools/linsched/tests/mcarlo-sims/sim-19 b/tools/linsched/tests/mcarlo-sims/sim-19 new file mode 100644 index 00000000000000..646be90f75701c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-19 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.076009 2.481388 LOGNORMAL 13.432850 2.905223 8218 +LOGNORMAL 11.546353 3.547400 LOGNORMAL 11.414956 3.171271 17244 +LOGNORMAL 12.167158 3.418076 LOGNORMAL 12.767727 2.188146 1274 diff --git a/tools/linsched/tests/mcarlo-sims/sim-190 b/tools/linsched/tests/mcarlo-sims/sim-190 new file mode 100644 index 00000000000000..d7f961e73e4c78 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-190 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.042131 3.101473 LOGNORMAL 11.168624 3.062655 25489 +LOGNORMAL 13.379073 2.082698 LOGNORMAL 11.645464 1.315010 5127 +LOGNORMAL 13.112231 2.268309 EXPONENTIAL 654457 5236 +LOGNORMAL 13.456847 1.223818 LOGNORMAL 13.509545 1.918335 27569 +LOGNORMAL 12.436213 1.439690 EXPONENTIAL 605542 1173 diff --git a/tools/linsched/tests/mcarlo-sims/sim-191 b/tools/linsched/tests/mcarlo-sims/sim-191 new file mode 100644 index 00000000000000..e00fea4ea7e13d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-191 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.544378 1.364268 LOGNORMAL 11.217013 3.341616 8076 +LOGNORMAL 13.119822 3.840515 EXPONENTIAL 673199 29301 +LOGNORMAL 11.986888 3.626276 LOGNORMAL 13.592021 2.093889 10807 diff --git a/tools/linsched/tests/mcarlo-sims/sim-192 b/tools/linsched/tests/mcarlo-sims/sim-192 new file mode 100644 index 00000000000000..d2a6d1c7e7ae1e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-192 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.116339 3.311732 LOGNORMAL 12.599353 1.320409 28048 +LOGNORMAL 13.195518 1.077617 EXPONENTIAL 682011 17602 diff --git a/tools/linsched/tests/mcarlo-sims/sim-193 b/tools/linsched/tests/mcarlo-sims/sim-193 new file mode 100644 index 00000000000000..ee6ea3c154604e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-193 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 12.928650 3.824403 LOGNORMAL 12.631146 1.662874 32614 +LOGNORMAL 11.137712 2.530201 LOGNORMAL 12.323674 2.997212 14077 +LOGNORMAL 11.229942 1.633081 EXPONENTIAL 626138 20371 +LOGNORMAL 13.414713 1.087706 EXPONENTIAL 609233 24232 +LOGNORMAL 13.247170 2.185390 EXPONENTIAL 686492 15607 diff --git a/tools/linsched/tests/mcarlo-sims/sim-194 b/tools/linsched/tests/mcarlo-sims/sim-194 new file mode 100644 index 00000000000000..2f078f9c8fba5b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-194 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.998534 3.353088 EXPONENTIAL 685000 2919 +LOGNORMAL 13.480867 2.937591 LOGNORMAL 12.764888 2.471320 22590 +LOGNORMAL 13.470024 3.690573 EXPONENTIAL 633705 29354 +LOGNORMAL 13.724206 3.726417 LOGNORMAL 11.742109 2.621451 13570 +LOGNORMAL 12.289323 1.651657 EXPONENTIAL 646155 23605 diff --git a/tools/linsched/tests/mcarlo-sims/sim-195 b/tools/linsched/tests/mcarlo-sims/sim-195 new file mode 100644 index 00000000000000..0f00c259025737 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-195 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.077221 3.853897 EXPONENTIAL 644239 3808 +LOGNORMAL 12.069017 3.965370 LOGNORMAL 13.578822 2.265251 27408 +LOGNORMAL 11.818092 1.677687 EXPONENTIAL 685817 3390 +LOGNORMAL 12.763181 3.783466 LOGNORMAL 12.002755 3.296113 12475 +LOGNORMAL 11.379196 2.153493 LOGNORMAL 12.476446 2.629165 26349 diff --git a/tools/linsched/tests/mcarlo-sims/sim-196 b/tools/linsched/tests/mcarlo-sims/sim-196 new file mode 100644 index 00000000000000..5f4137a82878ff --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-196 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.113256 1.501199 EXPONENTIAL 613052 14635 +LOGNORMAL 13.080228 1.388927 LOGNORMAL 13.024117 3.335936 25000 diff --git a/tools/linsched/tests/mcarlo-sims/sim-197 b/tools/linsched/tests/mcarlo-sims/sim-197 new file mode 100644 index 00000000000000..a751a060e4e274 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-197 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.905920 1.793344 LOGNORMAL 12.605224 1.007372 29963 +LOGNORMAL 11.180630 3.841074 LOGNORMAL 13.552910 1.764335 28512 +LOGNORMAL 12.662320 3.609166 LOGNORMAL 11.755895 3.333948 13810 +LOGNORMAL 11.072410 2.991325 LOGNORMAL 13.591326 2.408525 22755 +LOGNORMAL 12.470925 2.835552 LOGNORMAL 13.989626 3.644521 17374 diff --git a/tools/linsched/tests/mcarlo-sims/sim-198 b/tools/linsched/tests/mcarlo-sims/sim-198 new file mode 100644 index 00000000000000..15dfec50bae0a1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-198 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 12.877990 1.384237 LOGNORMAL 13.421843 3.908543 6822 +LOGNORMAL 11.013609 1.722738 EXPONENTIAL 652710 22699 +LOGNORMAL 12.181684 1.565179 LOGNORMAL 12.483364 1.892377 7150 diff --git a/tools/linsched/tests/mcarlo-sims/sim-199 b/tools/linsched/tests/mcarlo-sims/sim-199 new file mode 100644 index 00000000000000..a99ccd049f36cb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-199 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.629173 3.514381 LOGNORMAL 12.321039 3.694272 28360 +LOGNORMAL 12.299374 2.571253 EXPONENTIAL 629234 16453 +LOGNORMAL 13.688761 2.011231 EXPONENTIAL 681352 6966 +LOGNORMAL 11.187371 3.144017 LOGNORMAL 13.610941 2.088843 14131 diff --git a/tools/linsched/tests/mcarlo-sims/sim-2 b/tools/linsched/tests/mcarlo-sims/sim-2 new file mode 100644 index 00000000000000..7a6ddaf13051dc --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-2 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.333949 3.675406 EXPONENTIAL 605879 26038 +LOGNORMAL 12.377215 2.847001 EXPONENTIAL 664577 18974 +LOGNORMAL 12.981655 3.667371 LOGNORMAL 13.714666 2.387754 7369 +LOGNORMAL 11.776975 3.610534 EXPONENTIAL 630238 6062 diff --git a/tools/linsched/tests/mcarlo-sims/sim-20 b/tools/linsched/tests/mcarlo-sims/sim-20 new file mode 100644 index 00000000000000..35c3018f075ab9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-20 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.182196 1.175202 EXPONENTIAL 606065 15242 +LOGNORMAL 11.581923 1.380942 EXPONENTIAL 645904 15047 diff --git a/tools/linsched/tests/mcarlo-sims/sim-200 b/tools/linsched/tests/mcarlo-sims/sim-200 new file mode 100644 index 00000000000000..03488dad0fb813 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-200 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.265771 1.819281 LOGNORMAL 12.244165 1.680506 17268 +LOGNORMAL 13.709844 2.346890 EXPONENTIAL 659218 19521 +LOGNORMAL 11.443525 3.321232 EXPONENTIAL 658541 30313 diff --git a/tools/linsched/tests/mcarlo-sims/sim-201 b/tools/linsched/tests/mcarlo-sims/sim-201 new file mode 100644 index 00000000000000..7dc0cb53cfc9d2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-201 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.895042 3.972488 LOGNORMAL 13.156594 3.882900 16069 +LOGNORMAL 12.618820 1.500931 LOGNORMAL 13.919197 1.943096 5267 +LOGNORMAL 13.239817 1.609774 LOGNORMAL 11.196896 1.235749 24972 +LOGNORMAL 12.440097 3.714662 EXPONENTIAL 660198 32509 diff --git a/tools/linsched/tests/mcarlo-sims/sim-202 b/tools/linsched/tests/mcarlo-sims/sim-202 new file mode 100644 index 00000000000000..52ac209865198e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-202 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.413634 1.941745 EXPONENTIAL 665312 17217 +LOGNORMAL 12.861692 3.452571 LOGNORMAL 13.874632 2.932698 14756 +LOGNORMAL 11.191501 3.558050 EXPONENTIAL 687725 24276 diff --git a/tools/linsched/tests/mcarlo-sims/sim-203 b/tools/linsched/tests/mcarlo-sims/sim-203 new file mode 100644 index 00000000000000..daacd13bee59c7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-203 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.749636 3.138905 EXPONENTIAL 638217 10914 +LOGNORMAL 13.485504 2.867919 EXPONENTIAL 654666 5734 diff --git a/tools/linsched/tests/mcarlo-sims/sim-204 b/tools/linsched/tests/mcarlo-sims/sim-204 new file mode 100644 index 00000000000000..4ca0330e2d598e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-204 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.457756 3.510917 EXPONENTIAL 648702 26064 +LOGNORMAL 11.834669 1.285217 LOGNORMAL 11.774958 2.721118 2227 +LOGNORMAL 11.467412 2.795355 LOGNORMAL 11.634520 3.379751 29203 +LOGNORMAL 12.982459 2.182744 LOGNORMAL 13.281361 3.831974 27785 +LOGNORMAL 12.482642 1.769456 EXPONENTIAL 655438 15945 diff --git a/tools/linsched/tests/mcarlo-sims/sim-205 b/tools/linsched/tests/mcarlo-sims/sim-205 new file mode 100644 index 00000000000000..f4e50560ea0b3b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-205 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 11.273940 3.116925 EXPONENTIAL 613732 22831 +LOGNORMAL 11.893547 3.836304 LOGNORMAL 13.953442 1.494847 22233 diff --git a/tools/linsched/tests/mcarlo-sims/sim-206 b/tools/linsched/tests/mcarlo-sims/sim-206 new file mode 100644 index 00000000000000..2dae558ff91956 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-206 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.237341 3.990394 EXPONENTIAL 673507 27353 +LOGNORMAL 13.316679 3.421173 LOGNORMAL 12.503793 3.249558 1933 diff --git a/tools/linsched/tests/mcarlo-sims/sim-207 b/tools/linsched/tests/mcarlo-sims/sim-207 new file mode 100644 index 00000000000000..c855a61390091a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-207 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.092043 2.974454 LOGNORMAL 11.511957 1.469274 10423 +LOGNORMAL 12.960795 1.079706 EXPONENTIAL 695374 22715 +LOGNORMAL 12.622319 3.315696 EXPONENTIAL 646662 769 diff --git a/tools/linsched/tests/mcarlo-sims/sim-208 b/tools/linsched/tests/mcarlo-sims/sim-208 new file mode 100644 index 00000000000000..6e76664a59e5c0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-208 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.210104 2.212126 LOGNORMAL 12.109974 2.331839 27241 +LOGNORMAL 13.990441 2.349183 EXPONENTIAL 656119 18741 +LOGNORMAL 13.715945 2.884380 EXPONENTIAL 687564 21047 diff --git a/tools/linsched/tests/mcarlo-sims/sim-209 b/tools/linsched/tests/mcarlo-sims/sim-209 new file mode 100644 index 00000000000000..5dc4058811130f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-209 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.169622 2.836302 LOGNORMAL 11.878849 2.819490 1461 +LOGNORMAL 12.828976 2.607016 EXPONENTIAL 699896 23051 +LOGNORMAL 11.188647 3.583119 LOGNORMAL 13.343597 2.828714 9757 diff --git a/tools/linsched/tests/mcarlo-sims/sim-21 b/tools/linsched/tests/mcarlo-sims/sim-21 new file mode 100644 index 00000000000000..f3cb2f15e18869 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-21 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.929189 2.878949 EXPONENTIAL 649380 2450 +LOGNORMAL 11.761782 3.271480 LOGNORMAL 13.250045 2.498350 6504 +LOGNORMAL 12.555238 3.887072 LOGNORMAL 11.511445 1.859556 21237 +LOGNORMAL 13.266805 2.187912 EXPONENTIAL 630860 32539 diff --git a/tools/linsched/tests/mcarlo-sims/sim-210 b/tools/linsched/tests/mcarlo-sims/sim-210 new file mode 100644 index 00000000000000..8091bcf41be627 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-210 @@ -0,0 +1,3 @@ +ONE_GROUP 2 +LOGNORMAL 13.142530 1.506067 EXPONENTIAL 638720 27907 +LOGNORMAL 13.734074 1.585910 LOGNORMAL 11.374412 2.749077 1157 diff --git a/tools/linsched/tests/mcarlo-sims/sim-211 b/tools/linsched/tests/mcarlo-sims/sim-211 new file mode 100644 index 00000000000000..a14e628ffbc8d9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-211 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.014533 2.260249 EXPONENTIAL 687945 22963 +LOGNORMAL 13.039194 1.738292 EXPONENTIAL 651803 17958 diff --git a/tools/linsched/tests/mcarlo-sims/sim-212 b/tools/linsched/tests/mcarlo-sims/sim-212 new file mode 100644 index 00000000000000..307d1623d3c16a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-212 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.236969 1.744983 EXPONENTIAL 617985 5306 +LOGNORMAL 11.914669 1.836210 EXPONENTIAL 691059 29160 diff --git a/tools/linsched/tests/mcarlo-sims/sim-213 b/tools/linsched/tests/mcarlo-sims/sim-213 new file mode 100644 index 00000000000000..d21afa4c10b75b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-213 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.322805 3.381608 EXPONENTIAL 682355 26207 +LOGNORMAL 11.966672 2.851327 EXPONENTIAL 670972 5990 +LOGNORMAL 11.291734 2.180158 LOGNORMAL 11.556479 2.735009 1143 +LOGNORMAL 12.415025 2.319031 LOGNORMAL 11.327828 2.808973 21708 diff --git a/tools/linsched/tests/mcarlo-sims/sim-214 b/tools/linsched/tests/mcarlo-sims/sim-214 new file mode 100644 index 00000000000000..ad678e95781dab --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-214 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.442368 1.877126 LOGNORMAL 13.154708 2.179178 17653 +LOGNORMAL 13.004317 3.560437 LOGNORMAL 11.309443 2.800976 19521 +LOGNORMAL 12.959789 2.171743 LOGNORMAL 12.151373 2.132145 29272 +LOGNORMAL 11.238391 2.644116 LOGNORMAL 13.052739 1.376107 4499 diff --git a/tools/linsched/tests/mcarlo-sims/sim-215 b/tools/linsched/tests/mcarlo-sims/sim-215 new file mode 100644 index 00000000000000..4aa54507d5be27 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-215 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.817910 1.611386 LOGNORMAL 13.502226 1.908777 19089 +LOGNORMAL 12.719073 3.465083 LOGNORMAL 13.706485 2.885388 6368 +LOGNORMAL 11.917872 1.680496 LOGNORMAL 11.707931 1.196580 26176 +LOGNORMAL 12.188262 1.127781 LOGNORMAL 12.416669 2.951757 16961 diff --git a/tools/linsched/tests/mcarlo-sims/sim-216 b/tools/linsched/tests/mcarlo-sims/sim-216 new file mode 100644 index 00000000000000..26f6f48501032f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-216 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.636362 3.333331 LOGNORMAL 11.359559 2.107910 27119 +LOGNORMAL 11.228398 2.680754 EXPONENTIAL 659439 31227 diff --git a/tools/linsched/tests/mcarlo-sims/sim-217 b/tools/linsched/tests/mcarlo-sims/sim-217 new file mode 100644 index 00000000000000..cbb6425a43792b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-217 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 11.664057 1.799465 EXPONENTIAL 617101 32217 +LOGNORMAL 12.513153 1.570192 EXPONENTIAL 611712 20470 +LOGNORMAL 13.922162 3.772666 LOGNORMAL 11.351756 2.971317 29961 diff --git a/tools/linsched/tests/mcarlo-sims/sim-218 b/tools/linsched/tests/mcarlo-sims/sim-218 new file mode 100644 index 00000000000000..0b7e9336455d30 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-218 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.028270 3.135864 LOGNORMAL 12.511328 3.893141 31309 +LOGNORMAL 12.626234 3.120216 EXPONENTIAL 647340 11585 +LOGNORMAL 12.653122 2.016170 EXPONENTIAL 686425 19189 diff --git a/tools/linsched/tests/mcarlo-sims/sim-219 b/tools/linsched/tests/mcarlo-sims/sim-219 new file mode 100644 index 00000000000000..3b8272ff288cc5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-219 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.978147 3.710995 EXPONENTIAL 657305 9576 +LOGNORMAL 12.240251 1.904678 LOGNORMAL 13.040232 1.171788 9378 +LOGNORMAL 11.775354 3.374393 LOGNORMAL 12.685557 1.155339 22758 diff --git a/tools/linsched/tests/mcarlo-sims/sim-22 b/tools/linsched/tests/mcarlo-sims/sim-22 new file mode 100644 index 00000000000000..1f979e118ae878 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-22 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.820933 1.414141 EXPONENTIAL 618458 16471 +LOGNORMAL 12.146640 3.579457 LOGNORMAL 12.590124 2.218668 16130 diff --git a/tools/linsched/tests/mcarlo-sims/sim-220 b/tools/linsched/tests/mcarlo-sims/sim-220 new file mode 100644 index 00000000000000..bbad239cb2ce79 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-220 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.118267 3.721267 EXPONENTIAL 635279 10884 +LOGNORMAL 11.738974 3.938630 LOGNORMAL 11.929515 2.365546 25403 +LOGNORMAL 11.356014 2.522536 LOGNORMAL 13.127825 3.358146 27064 +LOGNORMAL 12.232053 2.115210 LOGNORMAL 11.852183 1.633024 27809 +LOGNORMAL 12.423031 1.889044 EXPONENTIAL 684901 4204 diff --git a/tools/linsched/tests/mcarlo-sims/sim-221 b/tools/linsched/tests/mcarlo-sims/sim-221 new file mode 100644 index 00000000000000..fe614bd7ce704b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-221 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.056558 3.576284 LOGNORMAL 11.146150 3.340278 18020 +LOGNORMAL 12.192925 1.497215 LOGNORMAL 13.605323 3.669137 604 diff --git a/tools/linsched/tests/mcarlo-sims/sim-222 b/tools/linsched/tests/mcarlo-sims/sim-222 new file mode 100644 index 00000000000000..337179f0efee8f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-222 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 13.997488 3.786466 LOGNORMAL 13.921997 3.997858 26892 +LOGNORMAL 13.681063 1.628926 EXPONENTIAL 693085 25204 +LOGNORMAL 13.261639 2.373371 EXPONENTIAL 642950 26740 +LOGNORMAL 13.526318 1.830033 EXPONENTIAL 695649 24388 +LOGNORMAL 12.606589 2.947376 EXPONENTIAL 678595 4998 diff --git a/tools/linsched/tests/mcarlo-sims/sim-223 b/tools/linsched/tests/mcarlo-sims/sim-223 new file mode 100644 index 00000000000000..f368bf2be2c43e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-223 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.138438 1.727660 EXPONENTIAL 670700 8153 +LOGNORMAL 11.529658 1.955252 LOGNORMAL 13.321729 1.292231 12943 +LOGNORMAL 13.130254 2.174250 LOGNORMAL 13.703853 3.657769 27208 +LOGNORMAL 11.167914 3.136818 LOGNORMAL 11.365052 1.433936 18484 +LOGNORMAL 13.210425 2.609534 EXPONENTIAL 624208 27006 diff --git a/tools/linsched/tests/mcarlo-sims/sim-224 b/tools/linsched/tests/mcarlo-sims/sim-224 new file mode 100644 index 00000000000000..07cdd3ee4a592d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-224 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.463829 3.579505 EXPONENTIAL 668736 11305 +LOGNORMAL 13.514390 2.348295 LOGNORMAL 12.478804 3.259387 23348 diff --git a/tools/linsched/tests/mcarlo-sims/sim-225 b/tools/linsched/tests/mcarlo-sims/sim-225 new file mode 100644 index 00000000000000..558ff64cc8e2d6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-225 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.890716 3.270065 LOGNORMAL 11.830709 3.721360 135 +LOGNORMAL 13.842071 1.685435 LOGNORMAL 12.290490 3.263333 23188 +LOGNORMAL 11.089573 3.447731 EXPONENTIAL 684667 25171 +LOGNORMAL 11.161806 2.470146 LOGNORMAL 12.377865 1.783076 30382 diff --git a/tools/linsched/tests/mcarlo-sims/sim-226 b/tools/linsched/tests/mcarlo-sims/sim-226 new file mode 100644 index 00000000000000..c66173feed2aca --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-226 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.085028 1.057319 EXPONENTIAL 643658 30695 +LOGNORMAL 11.399705 1.835458 EXPONENTIAL 637651 6523 +LOGNORMAL 13.964887 1.856289 LOGNORMAL 12.459675 2.758015 30088 +LOGNORMAL 11.127795 3.845605 EXPONENTIAL 612340 31181 +LOGNORMAL 12.049265 1.993302 EXPONENTIAL 668479 7539 diff --git a/tools/linsched/tests/mcarlo-sims/sim-227 b/tools/linsched/tests/mcarlo-sims/sim-227 new file mode 100644 index 00000000000000..37246bf09a4318 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-227 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.233643 3.834896 EXPONENTIAL 641132 29499 +LOGNORMAL 11.455981 2.671874 EXPONENTIAL 644529 27758 +LOGNORMAL 13.063927 3.427983 LOGNORMAL 13.814908 1.166304 23638 +LOGNORMAL 11.218505 1.414768 LOGNORMAL 13.041275 3.704600 25832 +LOGNORMAL 13.844641 2.875770 EXPONENTIAL 698375 5437 diff --git a/tools/linsched/tests/mcarlo-sims/sim-228 b/tools/linsched/tests/mcarlo-sims/sim-228 new file mode 100644 index 00000000000000..7c588af0d32dc5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-228 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.375895 2.672917 LOGNORMAL 12.693375 3.548722 17909 +LOGNORMAL 11.690291 1.726943 LOGNORMAL 13.595842 3.310328 30928 +LOGNORMAL 12.116950 2.578121 EXPONENTIAL 602572 26603 diff --git a/tools/linsched/tests/mcarlo-sims/sim-229 b/tools/linsched/tests/mcarlo-sims/sim-229 new file mode 100644 index 00000000000000..36a5942ae21fb9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-229 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 11.002251 2.830125 LOGNORMAL 12.518235 2.978640 26775 +LOGNORMAL 13.376719 1.513780 LOGNORMAL 11.706961 2.886677 15089 diff --git a/tools/linsched/tests/mcarlo-sims/sim-23 b/tools/linsched/tests/mcarlo-sims/sim-23 new file mode 100644 index 00000000000000..5dc25bd210f2d9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-23 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.663170 2.901228 LOGNORMAL 11.910681 3.818032 21092 +LOGNORMAL 11.618946 2.627801 LOGNORMAL 13.503391 3.491856 28199 +LOGNORMAL 13.048510 2.313348 EXPONENTIAL 644973 29957 +LOGNORMAL 12.425195 2.248438 EXPONENTIAL 615210 28235 diff --git a/tools/linsched/tests/mcarlo-sims/sim-230 b/tools/linsched/tests/mcarlo-sims/sim-230 new file mode 100644 index 00000000000000..45b10148922dd7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-230 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.765878 2.108507 EXPONENTIAL 656309 19147 +LOGNORMAL 13.423928 2.956464 LOGNORMAL 11.571433 2.075946 6765 +LOGNORMAL 13.358092 3.444132 LOGNORMAL 13.273448 2.846871 9162 diff --git a/tools/linsched/tests/mcarlo-sims/sim-231 b/tools/linsched/tests/mcarlo-sims/sim-231 new file mode 100644 index 00000000000000..51c9c37e6b8690 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-231 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.628827 2.700852 EXPONENTIAL 676193 19006 +LOGNORMAL 11.471691 2.717427 LOGNORMAL 13.821020 1.878948 23892 +LOGNORMAL 11.753074 3.920731 EXPONENTIAL 683074 30837 diff --git a/tools/linsched/tests/mcarlo-sims/sim-232 b/tools/linsched/tests/mcarlo-sims/sim-232 new file mode 100644 index 00000000000000..b176c9cc0746bd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-232 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.629900 1.737002 LOGNORMAL 12.920050 3.287180 828 +LOGNORMAL 11.371509 1.949864 EXPONENTIAL 684774 2707 diff --git a/tools/linsched/tests/mcarlo-sims/sim-233 b/tools/linsched/tests/mcarlo-sims/sim-233 new file mode 100644 index 00000000000000..7adf62b0b701d1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-233 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.046497 3.477034 EXPONENTIAL 614650 6926 +LOGNORMAL 12.666527 2.327300 EXPONENTIAL 666053 24017 +LOGNORMAL 13.456892 1.991327 LOGNORMAL 12.090441 1.043878 2190 diff --git a/tools/linsched/tests/mcarlo-sims/sim-234 b/tools/linsched/tests/mcarlo-sims/sim-234 new file mode 100644 index 00000000000000..6c101ae124633a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-234 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 11.772303 3.101258 EXPONENTIAL 698478 424 +LOGNORMAL 11.873674 2.835336 EXPONENTIAL 669240 28542 +LOGNORMAL 12.875890 2.079525 LOGNORMAL 12.206044 2.984820 577 +LOGNORMAL 11.592630 1.328346 EXPONENTIAL 652390 8274 +LOGNORMAL 11.812755 1.977094 LOGNORMAL 13.286173 3.712311 4854 diff --git a/tools/linsched/tests/mcarlo-sims/sim-235 b/tools/linsched/tests/mcarlo-sims/sim-235 new file mode 100644 index 00000000000000..1b7d39ec4a4bd4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-235 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.046605 3.292846 LOGNORMAL 11.824677 1.342658 25425 +LOGNORMAL 11.724851 3.566963 LOGNORMAL 12.838712 1.237801 32456 +LOGNORMAL 13.652722 2.297514 EXPONENTIAL 649133 10422 diff --git a/tools/linsched/tests/mcarlo-sims/sim-236 b/tools/linsched/tests/mcarlo-sims/sim-236 new file mode 100644 index 00000000000000..3c603fe6e7c6fe --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-236 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.448647 1.408640 EXPONENTIAL 655469 11932 +LOGNORMAL 11.705225 3.710340 LOGNORMAL 12.905550 2.582775 15216 +LOGNORMAL 12.961788 2.769242 LOGNORMAL 12.724318 1.618074 21219 +LOGNORMAL 11.956424 1.618078 EXPONENTIAL 634118 26051 diff --git a/tools/linsched/tests/mcarlo-sims/sim-237 b/tools/linsched/tests/mcarlo-sims/sim-237 new file mode 100644 index 00000000000000..55f7cbdd338522 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-237 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.871817 3.631782 LOGNORMAL 12.663852 2.362460 25942 +LOGNORMAL 12.337717 2.005188 EXPONENTIAL 688555 11082 +LOGNORMAL 11.266239 2.678552 EXPONENTIAL 697025 18984 +LOGNORMAL 13.566575 3.427083 EXPONENTIAL 602396 21966 diff --git a/tools/linsched/tests/mcarlo-sims/sim-238 b/tools/linsched/tests/mcarlo-sims/sim-238 new file mode 100644 index 00000000000000..ebdb57f8cebeb7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-238 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.960700 1.488026 LOGNORMAL 11.194664 2.724517 12028 +LOGNORMAL 12.540495 2.105473 LOGNORMAL 11.288421 3.498515 31711 diff --git a/tools/linsched/tests/mcarlo-sims/sim-239 b/tools/linsched/tests/mcarlo-sims/sim-239 new file mode 100644 index 00000000000000..13d2aa079b30a0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-239 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.968947 1.099466 EXPONENTIAL 632730 20440 +LOGNORMAL 12.406470 2.535793 EXPONENTIAL 633875 16712 +LOGNORMAL 11.555922 2.381144 EXPONENTIAL 632172 12580 diff --git a/tools/linsched/tests/mcarlo-sims/sim-24 b/tools/linsched/tests/mcarlo-sims/sim-24 new file mode 100644 index 00000000000000..8ff1d41f6d08d4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-24 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.768030 3.282071 EXPONENTIAL 629637 9024 +LOGNORMAL 13.055221 1.096956 EXPONENTIAL 607370 26066 +LOGNORMAL 12.118304 1.334635 EXPONENTIAL 679778 23481 +LOGNORMAL 13.275491 1.183188 LOGNORMAL 11.137339 2.263181 31256 diff --git a/tools/linsched/tests/mcarlo-sims/sim-240 b/tools/linsched/tests/mcarlo-sims/sim-240 new file mode 100644 index 00000000000000..436faece56552f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-240 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.716097 3.439196 LOGNORMAL 11.915582 2.187227 18422 +LOGNORMAL 11.800887 3.506248 EXPONENTIAL 696877 6829 +LOGNORMAL 12.972994 2.106929 EXPONENTIAL 658449 8699 +LOGNORMAL 13.627524 1.799165 EXPONENTIAL 698523 11470 diff --git a/tools/linsched/tests/mcarlo-sims/sim-241 b/tools/linsched/tests/mcarlo-sims/sim-241 new file mode 100644 index 00000000000000..23b3fd0e1bd51c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-241 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 12.017212 3.285649 LOGNORMAL 13.703954 2.355567 3583 +LOGNORMAL 12.712110 3.435982 LOGNORMAL 12.271493 1.983978 9134 +LOGNORMAL 12.681659 1.639236 EXPONENTIAL 640587 9834 diff --git a/tools/linsched/tests/mcarlo-sims/sim-242 b/tools/linsched/tests/mcarlo-sims/sim-242 new file mode 100644 index 00000000000000..2e4f98ba11f16d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-242 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.928394 1.510062 EXPONENTIAL 638343 20831 +LOGNORMAL 13.237271 3.815649 EXPONENTIAL 673753 510 +LOGNORMAL 13.858352 2.323471 EXPONENTIAL 607258 27441 +LOGNORMAL 11.414977 3.510192 EXPONENTIAL 669430 228 diff --git a/tools/linsched/tests/mcarlo-sims/sim-243 b/tools/linsched/tests/mcarlo-sims/sim-243 new file mode 100644 index 00000000000000..cb4f16f7e412fb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-243 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.848355 3.303462 LOGNORMAL 12.243870 2.715943 60 +LOGNORMAL 11.812664 3.438531 LOGNORMAL 11.739228 2.196871 11919 +LOGNORMAL 11.641289 3.152228 LOGNORMAL 13.097315 3.578964 1702 +LOGNORMAL 11.954392 3.461822 EXPONENTIAL 644043 21629 diff --git a/tools/linsched/tests/mcarlo-sims/sim-244 b/tools/linsched/tests/mcarlo-sims/sim-244 new file mode 100644 index 00000000000000..1cfbae76e6dbe7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-244 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.358652 1.859708 EXPONENTIAL 634355 24744 +LOGNORMAL 12.024154 2.961130 LOGNORMAL 13.785666 1.685490 2565 +LOGNORMAL 11.939237 3.763067 LOGNORMAL 13.543361 3.265005 9473 diff --git a/tools/linsched/tests/mcarlo-sims/sim-245 b/tools/linsched/tests/mcarlo-sims/sim-245 new file mode 100644 index 00000000000000..4f9c3cf028ec9e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-245 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.881717 1.022435 LOGNORMAL 11.691362 1.726238 25003 +LOGNORMAL 13.536229 3.406696 LOGNORMAL 11.294928 1.849618 19707 +LOGNORMAL 12.083817 3.716538 LOGNORMAL 13.678658 3.211286 16448 +LOGNORMAL 11.031711 2.974079 EXPONENTIAL 664306 27103 diff --git a/tools/linsched/tests/mcarlo-sims/sim-246 b/tools/linsched/tests/mcarlo-sims/sim-246 new file mode 100644 index 00000000000000..80eb0ad7f25e4b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-246 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.386728 1.732008 LOGNORMAL 13.322648 1.746438 31319 +LOGNORMAL 11.790401 1.269741 EXPONENTIAL 652521 16650 +LOGNORMAL 12.823706 1.029992 LOGNORMAL 12.462138 2.152129 19956 diff --git a/tools/linsched/tests/mcarlo-sims/sim-247 b/tools/linsched/tests/mcarlo-sims/sim-247 new file mode 100644 index 00000000000000..f41fdd4aebf324 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-247 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.340675 3.726707 EXPONENTIAL 643436 2169 +LOGNORMAL 11.319639 3.177073 LOGNORMAL 11.661313 3.684079 27715 +LOGNORMAL 11.272521 3.266213 LOGNORMAL 13.742037 3.416331 30701 diff --git a/tools/linsched/tests/mcarlo-sims/sim-248 b/tools/linsched/tests/mcarlo-sims/sim-248 new file mode 100644 index 00000000000000..e5cacd25cef9d3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-248 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.938862 1.454591 LOGNORMAL 12.555011 3.077821 5747 +LOGNORMAL 12.414829 2.036370 EXPONENTIAL 632816 30676 +LOGNORMAL 12.446062 1.966343 EXPONENTIAL 686103 14974 diff --git a/tools/linsched/tests/mcarlo-sims/sim-249 b/tools/linsched/tests/mcarlo-sims/sim-249 new file mode 100644 index 00000000000000..676e11781618e7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-249 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.947423 3.341529 LOGNORMAL 12.408737 1.648536 19039 +LOGNORMAL 12.099015 1.143216 EXPONENTIAL 678035 18136 +LOGNORMAL 13.262420 3.490726 LOGNORMAL 11.691959 2.756724 10802 +LOGNORMAL 12.356925 3.844963 LOGNORMAL 12.673296 2.084093 24908 +LOGNORMAL 12.953915 2.442682 EXPONENTIAL 678738 27457 diff --git a/tools/linsched/tests/mcarlo-sims/sim-25 b/tools/linsched/tests/mcarlo-sims/sim-25 new file mode 100644 index 00000000000000..8700e32be0a214 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-25 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 11.467129 1.042081 EXPONENTIAL 654335 21549 +LOGNORMAL 11.394932 2.625144 EXPONENTIAL 675130 9523 +LOGNORMAL 12.053625 3.282469 LOGNORMAL 13.424787 2.393768 23605 diff --git a/tools/linsched/tests/mcarlo-sims/sim-250 b/tools/linsched/tests/mcarlo-sims/sim-250 new file mode 100644 index 00000000000000..19c01ff3d7677b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-250 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.938910 3.264088 EXPONENTIAL 608032 30326 +LOGNORMAL 11.011862 2.360611 EXPONENTIAL 678032 28892 +LOGNORMAL 13.574991 3.869853 EXPONENTIAL 670023 5839 diff --git a/tools/linsched/tests/mcarlo-sims/sim-251 b/tools/linsched/tests/mcarlo-sims/sim-251 new file mode 100644 index 00000000000000..f9a3e15ba526ac --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-251 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.272214 2.097155 LOGNORMAL 11.840141 3.252530 7346 +LOGNORMAL 13.260796 3.204176 EXPONENTIAL 612457 9123 +LOGNORMAL 11.459749 2.997892 EXPONENTIAL 641340 22539 +LOGNORMAL 13.374320 3.188061 LOGNORMAL 12.962918 3.767738 23896 diff --git a/tools/linsched/tests/mcarlo-sims/sim-252 b/tools/linsched/tests/mcarlo-sims/sim-252 new file mode 100644 index 00000000000000..1150319990a9fe --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-252 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.178752 1.280919 LOGNORMAL 11.995708 1.864769 15224 +LOGNORMAL 11.211037 1.903558 EXPONENTIAL 669394 32252 +LOGNORMAL 13.714313 2.461698 LOGNORMAL 11.848574 3.989095 19445 diff --git a/tools/linsched/tests/mcarlo-sims/sim-253 b/tools/linsched/tests/mcarlo-sims/sim-253 new file mode 100644 index 00000000000000..07bcd95bc60178 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-253 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 11.641075 2.553445 LOGNORMAL 11.515112 3.491322 25960 +LOGNORMAL 12.352133 1.304180 EXPONENTIAL 681998 19347 +LOGNORMAL 11.650269 1.074336 EXPONENTIAL 602833 23297 diff --git a/tools/linsched/tests/mcarlo-sims/sim-254 b/tools/linsched/tests/mcarlo-sims/sim-254 new file mode 100644 index 00000000000000..bf57ada8eed182 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-254 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.488127 1.950578 EXPONENTIAL 654077 31777 +LOGNORMAL 11.040998 3.051730 LOGNORMAL 11.463940 1.434464 11023 diff --git a/tools/linsched/tests/mcarlo-sims/sim-255 b/tools/linsched/tests/mcarlo-sims/sim-255 new file mode 100644 index 00000000000000..3858241ac05955 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-255 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.903965 3.932094 LOGNORMAL 11.741739 2.402446 134 +LOGNORMAL 12.214968 2.964829 EXPONENTIAL 602055 32374 +LOGNORMAL 11.591439 2.318887 EXPONENTIAL 696687 6909 +LOGNORMAL 11.650974 3.927576 EXPONENTIAL 628775 7857 diff --git a/tools/linsched/tests/mcarlo-sims/sim-256 b/tools/linsched/tests/mcarlo-sims/sim-256 new file mode 100644 index 00000000000000..14347cda8be9a9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-256 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.689755 2.711396 EXPONENTIAL 696427 10663 +LOGNORMAL 13.506755 3.035206 EXPONENTIAL 638554 26446 +LOGNORMAL 11.466646 1.911148 EXPONENTIAL 683930 30492 +LOGNORMAL 11.078510 3.513201 EXPONENTIAL 644243 31015 diff --git a/tools/linsched/tests/mcarlo-sims/sim-257 b/tools/linsched/tests/mcarlo-sims/sim-257 new file mode 100644 index 00000000000000..636f3628f51eea --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-257 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.749350 2.320366 LOGNORMAL 12.798941 1.796736 16879 +LOGNORMAL 11.741441 3.395338 EXPONENTIAL 643965 31677 +LOGNORMAL 11.526374 3.764862 LOGNORMAL 12.335498 3.708367 29970 +LOGNORMAL 13.998868 2.967366 EXPONENTIAL 667156 9928 +LOGNORMAL 11.304016 1.590207 EXPONENTIAL 618106 23263 diff --git a/tools/linsched/tests/mcarlo-sims/sim-258 b/tools/linsched/tests/mcarlo-sims/sim-258 new file mode 100644 index 00000000000000..a0104d6ee05670 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-258 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.118179 3.229953 EXPONENTIAL 647996 25524 +LOGNORMAL 13.435205 3.498206 EXPONENTIAL 652173 161 +LOGNORMAL 11.156137 3.200567 LOGNORMAL 11.787262 2.516342 1872 diff --git a/tools/linsched/tests/mcarlo-sims/sim-259 b/tools/linsched/tests/mcarlo-sims/sim-259 new file mode 100644 index 00000000000000..116500eb22852e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-259 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.803742 1.487715 LOGNORMAL 11.153391 2.038246 31788 +LOGNORMAL 11.780708 3.355726 LOGNORMAL 12.542674 2.716117 29305 +LOGNORMAL 11.243500 1.501062 EXPONENTIAL 636520 9035 +LOGNORMAL 13.212248 3.246788 LOGNORMAL 13.799494 3.096044 20803 diff --git a/tools/linsched/tests/mcarlo-sims/sim-26 b/tools/linsched/tests/mcarlo-sims/sim-26 new file mode 100644 index 00000000000000..2f206c538293b2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-26 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.991405 2.543772 EXPONENTIAL 669653 3847 +LOGNORMAL 12.820596 2.758971 LOGNORMAL 11.603510 1.186102 27692 +LOGNORMAL 11.072508 1.637962 LOGNORMAL 12.919370 3.859170 26150 +LOGNORMAL 12.035495 1.557906 LOGNORMAL 13.461603 3.164874 1142 +LOGNORMAL 12.178016 2.918222 EXPONENTIAL 698735 14107 diff --git a/tools/linsched/tests/mcarlo-sims/sim-260 b/tools/linsched/tests/mcarlo-sims/sim-260 new file mode 100644 index 00000000000000..8d5542aa441839 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-260 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.572570 3.191062 EXPONENTIAL 636152 30475 +LOGNORMAL 11.691479 3.680662 EXPONENTIAL 616363 17822 diff --git a/tools/linsched/tests/mcarlo-sims/sim-261 b/tools/linsched/tests/mcarlo-sims/sim-261 new file mode 100644 index 00000000000000..38a7d7b8196ab1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-261 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.472924 1.430946 LOGNORMAL 11.646218 1.982059 15133 +LOGNORMAL 11.220425 3.690675 LOGNORMAL 11.778467 1.698829 16655 +LOGNORMAL 13.228106 2.784860 LOGNORMAL 12.933197 2.235868 31456 +LOGNORMAL 11.135507 1.468640 LOGNORMAL 13.301810 2.515984 23391 +LOGNORMAL 12.512958 1.280769 EXPONENTIAL 638231 3425 diff --git a/tools/linsched/tests/mcarlo-sims/sim-262 b/tools/linsched/tests/mcarlo-sims/sim-262 new file mode 100644 index 00000000000000..4235fdde2ab2c7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-262 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.450277 3.807272 LOGNORMAL 11.745120 2.227968 13767 +LOGNORMAL 11.778786 1.048215 LOGNORMAL 13.680082 3.137906 26269 diff --git a/tools/linsched/tests/mcarlo-sims/sim-263 b/tools/linsched/tests/mcarlo-sims/sim-263 new file mode 100644 index 00000000000000..52819f5f1e1e5a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-263 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.029555 2.731658 EXPONENTIAL 695495 25799 +LOGNORMAL 11.261178 1.613275 LOGNORMAL 13.665540 1.725606 32231 +LOGNORMAL 13.252600 3.449832 LOGNORMAL 13.267897 2.539136 5575 diff --git a/tools/linsched/tests/mcarlo-sims/sim-264 b/tools/linsched/tests/mcarlo-sims/sim-264 new file mode 100644 index 00000000000000..0e2e121167dc85 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-264 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.646259 3.671531 LOGNORMAL 12.425755 2.668867 18248 +LOGNORMAL 13.291311 3.057012 EXPONENTIAL 676270 27555 +LOGNORMAL 13.809140 3.217804 EXPONENTIAL 609091 29851 +LOGNORMAL 12.246067 3.654449 LOGNORMAL 12.828473 3.149536 7600 diff --git a/tools/linsched/tests/mcarlo-sims/sim-265 b/tools/linsched/tests/mcarlo-sims/sim-265 new file mode 100644 index 00000000000000..657a3840cad130 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-265 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 13.170732 1.486258 EXPONENTIAL 616509 5246 +LOGNORMAL 13.279738 3.549532 EXPONENTIAL 664846 11389 +LOGNORMAL 11.166133 3.204055 EXPONENTIAL 667543 25852 diff --git a/tools/linsched/tests/mcarlo-sims/sim-266 b/tools/linsched/tests/mcarlo-sims/sim-266 new file mode 100644 index 00000000000000..4e6577e8c744c0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-266 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.200112 1.280101 LOGNORMAL 12.492147 2.509026 8308 +LOGNORMAL 13.025134 2.429220 LOGNORMAL 13.214466 1.521867 20324 diff --git a/tools/linsched/tests/mcarlo-sims/sim-267 b/tools/linsched/tests/mcarlo-sims/sim-267 new file mode 100644 index 00000000000000..c32741928d6968 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-267 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.153595 2.474907 LOGNORMAL 13.454654 3.376340 15674 +LOGNORMAL 12.691898 2.730507 LOGNORMAL 13.416977 3.130106 24025 +LOGNORMAL 11.546766 1.493295 LOGNORMAL 12.312216 2.409267 4162 diff --git a/tools/linsched/tests/mcarlo-sims/sim-268 b/tools/linsched/tests/mcarlo-sims/sim-268 new file mode 100644 index 00000000000000..c3c01f659c0537 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-268 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.963384 3.593074 LOGNORMAL 12.201600 3.289937 31602 +LOGNORMAL 11.002376 1.939817 EXPONENTIAL 658011 7244 diff --git a/tools/linsched/tests/mcarlo-sims/sim-269 b/tools/linsched/tests/mcarlo-sims/sim-269 new file mode 100644 index 00000000000000..86856f949d37c7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-269 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.879422 3.441158 EXPONENTIAL 644185 25396 +LOGNORMAL 12.082671 2.452893 LOGNORMAL 12.906489 3.363365 4663 +LOGNORMAL 12.949813 2.515182 EXPONENTIAL 665262 7242 +LOGNORMAL 11.989274 1.735965 LOGNORMAL 12.892191 3.058665 28918 diff --git a/tools/linsched/tests/mcarlo-sims/sim-27 b/tools/linsched/tests/mcarlo-sims/sim-27 new file mode 100644 index 00000000000000..05aac88a53cda7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-27 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.351214 1.848596 LOGNORMAL 12.114790 2.283177 4999 +LOGNORMAL 12.638661 1.978197 EXPONENTIAL 697278 21773 diff --git a/tools/linsched/tests/mcarlo-sims/sim-270 b/tools/linsched/tests/mcarlo-sims/sim-270 new file mode 100644 index 00000000000000..c6f7b6e7699990 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-270 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.938550 3.216903 EXPONENTIAL 643820 1960 +LOGNORMAL 11.739044 2.115191 EXPONENTIAL 630221 30675 +LOGNORMAL 11.615528 2.181351 EXPONENTIAL 632112 29172 diff --git a/tools/linsched/tests/mcarlo-sims/sim-271 b/tools/linsched/tests/mcarlo-sims/sim-271 new file mode 100644 index 00000000000000..631360740d2971 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-271 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.153697 3.186502 LOGNORMAL 12.209211 2.208553 22558 +LOGNORMAL 13.290679 1.448893 EXPONENTIAL 676407 25562 +LOGNORMAL 11.649996 2.485932 EXPONENTIAL 671096 19282 +LOGNORMAL 11.528056 2.045142 LOGNORMAL 12.921313 3.513091 15975 diff --git a/tools/linsched/tests/mcarlo-sims/sim-272 b/tools/linsched/tests/mcarlo-sims/sim-272 new file mode 100644 index 00000000000000..e89c1593384c77 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-272 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.799913 1.143463 LOGNORMAL 12.483304 3.894139 8608 +LOGNORMAL 11.837143 3.864439 LOGNORMAL 11.583092 3.025277 23401 +LOGNORMAL 13.792118 2.135606 LOGNORMAL 11.582938 3.446825 29482 +LOGNORMAL 13.765489 1.579695 EXPONENTIAL 656434 844 diff --git a/tools/linsched/tests/mcarlo-sims/sim-273 b/tools/linsched/tests/mcarlo-sims/sim-273 new file mode 100644 index 00000000000000..669c471b213375 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-273 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.288191 2.631013 EXPONENTIAL 675243 11847 +LOGNORMAL 11.915695 1.086945 LOGNORMAL 12.537388 3.881175 27615 diff --git a/tools/linsched/tests/mcarlo-sims/sim-274 b/tools/linsched/tests/mcarlo-sims/sim-274 new file mode 100644 index 00000000000000..c93d4aa7cbd6cd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-274 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.982288 1.307438 LOGNORMAL 13.364254 2.018741 2583 +LOGNORMAL 11.878112 2.428954 LOGNORMAL 11.888160 3.311946 17878 +LOGNORMAL 11.971688 3.164098 LOGNORMAL 11.851782 3.897244 771 diff --git a/tools/linsched/tests/mcarlo-sims/sim-275 b/tools/linsched/tests/mcarlo-sims/sim-275 new file mode 100644 index 00000000000000..0c17a98cc5bbf1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-275 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.807565 3.741353 LOGNORMAL 11.606799 2.466699 13543 +LOGNORMAL 12.731765 3.779398 EXPONENTIAL 602198 25031 diff --git a/tools/linsched/tests/mcarlo-sims/sim-276 b/tools/linsched/tests/mcarlo-sims/sim-276 new file mode 100644 index 00000000000000..4501eb4d55905f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-276 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.948701 2.825327 LOGNORMAL 11.478907 3.988216 20112 +LOGNORMAL 11.568060 2.378362 LOGNORMAL 11.049920 3.001521 30917 diff --git a/tools/linsched/tests/mcarlo-sims/sim-277 b/tools/linsched/tests/mcarlo-sims/sim-277 new file mode 100644 index 00000000000000..3bbbaced7760af --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-277 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 13.916092 3.752609 LOGNORMAL 12.366079 1.690243 102 +LOGNORMAL 11.053641 2.544629 EXPONENTIAL 691271 31940 +LOGNORMAL 13.896232 2.972720 LOGNORMAL 12.645305 2.639668 28590 +LOGNORMAL 12.236701 2.236282 EXPONENTIAL 646304 21583 diff --git a/tools/linsched/tests/mcarlo-sims/sim-278 b/tools/linsched/tests/mcarlo-sims/sim-278 new file mode 100644 index 00000000000000..22e16ab1581786 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-278 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.743168 3.431841 EXPONENTIAL 611022 1929 +LOGNORMAL 11.303105 1.286971 EXPONENTIAL 620283 31304 +LOGNORMAL 12.439180 3.299805 LOGNORMAL 11.214972 2.029835 25429 +LOGNORMAL 12.257375 1.705054 LOGNORMAL 12.526980 2.944800 10651 diff --git a/tools/linsched/tests/mcarlo-sims/sim-279 b/tools/linsched/tests/mcarlo-sims/sim-279 new file mode 100644 index 00000000000000..80b23b487084e5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-279 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.806669 3.688639 EXPONENTIAL 686505 27320 +LOGNORMAL 12.782714 2.076381 EXPONENTIAL 659972 10569 +LOGNORMAL 12.943562 2.448476 LOGNORMAL 11.585432 3.355741 10910 +LOGNORMAL 12.312292 3.691273 LOGNORMAL 13.157406 2.529262 16907 +LOGNORMAL 12.919633 2.271435 EXPONENTIAL 666898 2061 diff --git a/tools/linsched/tests/mcarlo-sims/sim-28 b/tools/linsched/tests/mcarlo-sims/sim-28 new file mode 100644 index 00000000000000..cf419875972cc4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-28 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.942450 1.764248 EXPONENTIAL 640891 13303 +LOGNORMAL 13.888409 3.493990 LOGNORMAL 12.555550 3.129463 20374 diff --git a/tools/linsched/tests/mcarlo-sims/sim-280 b/tools/linsched/tests/mcarlo-sims/sim-280 new file mode 100644 index 00000000000000..23f9df11de9023 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-280 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.619662 2.657369 LOGNORMAL 13.218817 2.655954 28563 +LOGNORMAL 13.746301 3.079991 LOGNORMAL 12.065360 2.505072 13926 +LOGNORMAL 12.834068 1.179089 LOGNORMAL 12.045153 1.888489 3230 +LOGNORMAL 12.105327 2.231733 EXPONENTIAL 656151 521 diff --git a/tools/linsched/tests/mcarlo-sims/sim-281 b/tools/linsched/tests/mcarlo-sims/sim-281 new file mode 100644 index 00000000000000..0da312e3884184 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-281 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.531611 1.784797 LOGNORMAL 13.359179 3.717828 4061 +LOGNORMAL 11.791147 1.803218 EXPONENTIAL 677838 13537 diff --git a/tools/linsched/tests/mcarlo-sims/sim-282 b/tools/linsched/tests/mcarlo-sims/sim-282 new file mode 100644 index 00000000000000..3c439854efdb14 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-282 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 11.251483 3.676697 EXPONENTIAL 616005 15454 +LOGNORMAL 13.549609 3.275901 LOGNORMAL 12.885903 2.364762 28045 +LOGNORMAL 13.167325 1.228674 LOGNORMAL 13.371981 2.884879 4007 +LOGNORMAL 13.302888 2.637511 EXPONENTIAL 640666 18814 diff --git a/tools/linsched/tests/mcarlo-sims/sim-283 b/tools/linsched/tests/mcarlo-sims/sim-283 new file mode 100644 index 00000000000000..7d02c27f06ce9a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-283 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.676261 1.911111 EXPONENTIAL 647176 14686 +LOGNORMAL 11.010290 2.945863 LOGNORMAL 11.237072 1.466056 7573 diff --git a/tools/linsched/tests/mcarlo-sims/sim-284 b/tools/linsched/tests/mcarlo-sims/sim-284 new file mode 100644 index 00000000000000..10717101e1a8da --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-284 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.128595 2.302139 LOGNORMAL 13.830189 2.994355 13803 +LOGNORMAL 11.346544 2.366516 LOGNORMAL 11.465113 3.161798 12547 +LOGNORMAL 11.737536 3.762052 LOGNORMAL 13.030101 1.899491 4252 diff --git a/tools/linsched/tests/mcarlo-sims/sim-285 b/tools/linsched/tests/mcarlo-sims/sim-285 new file mode 100644 index 00000000000000..bfe0ce860365d6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-285 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.309017 2.643965 EXPONENTIAL 695617 23125 +LOGNORMAL 11.227786 1.406649 LOGNORMAL 12.479206 1.014115 22494 diff --git a/tools/linsched/tests/mcarlo-sims/sim-286 b/tools/linsched/tests/mcarlo-sims/sim-286 new file mode 100644 index 00000000000000..0c5707e34bbfa7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-286 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.225322 1.979524 LOGNORMAL 13.801361 1.473031 7408 +LOGNORMAL 11.652856 2.556259 LOGNORMAL 12.074424 1.836655 31051 +LOGNORMAL 13.414630 2.692131 EXPONENTIAL 684683 30394 +LOGNORMAL 12.542043 1.109642 LOGNORMAL 13.535411 1.651249 648 +LOGNORMAL 12.831619 2.027210 EXPONENTIAL 610874 21257 diff --git a/tools/linsched/tests/mcarlo-sims/sim-287 b/tools/linsched/tests/mcarlo-sims/sim-287 new file mode 100644 index 00000000000000..a944d55bfa691e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-287 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.809413 1.804119 EXPONENTIAL 682703 20932 +LOGNORMAL 12.905011 2.519581 LOGNORMAL 12.008934 2.150170 13427 diff --git a/tools/linsched/tests/mcarlo-sims/sim-288 b/tools/linsched/tests/mcarlo-sims/sim-288 new file mode 100644 index 00000000000000..4aad3f53ac3372 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-288 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.036228 2.881956 LOGNORMAL 12.080100 1.243234 1204 +LOGNORMAL 11.270773 3.887886 LOGNORMAL 13.547201 1.807358 3009 +LOGNORMAL 11.094410 3.756139 LOGNORMAL 13.489618 3.005956 29376 +LOGNORMAL 13.122800 2.904969 EXPONENTIAL 673098 17974 +LOGNORMAL 13.031585 2.840807 EXPONENTIAL 639082 20897 diff --git a/tools/linsched/tests/mcarlo-sims/sim-289 b/tools/linsched/tests/mcarlo-sims/sim-289 new file mode 100644 index 00000000000000..f33fda6d681126 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-289 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 12.972161 3.105609 EXPONENTIAL 620257 18632 +LOGNORMAL 12.989804 2.636292 LOGNORMAL 13.399629 2.561075 2104 +LOGNORMAL 11.777341 3.767789 LOGNORMAL 11.511739 3.796203 17064 +LOGNORMAL 11.661129 3.601930 EXPONENTIAL 658048 23632 diff --git a/tools/linsched/tests/mcarlo-sims/sim-29 b/tools/linsched/tests/mcarlo-sims/sim-29 new file mode 100644 index 00000000000000..432e3b30a45640 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-29 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.108231 3.034209 LOGNORMAL 11.226769 2.307378 17307 +LOGNORMAL 12.447680 2.163743 LOGNORMAL 11.561977 2.152463 14290 +LOGNORMAL 12.504099 2.391482 EXPONENTIAL 637219 29475 +LOGNORMAL 11.136455 2.400131 LOGNORMAL 11.554301 2.135963 22085 diff --git a/tools/linsched/tests/mcarlo-sims/sim-290 b/tools/linsched/tests/mcarlo-sims/sim-290 new file mode 100644 index 00000000000000..a6bc66961977ce --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-290 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.409405 1.870431 LOGNORMAL 11.975478 3.865735 29440 +LOGNORMAL 13.469073 2.716022 EXPONENTIAL 619234 15284 +LOGNORMAL 11.202530 2.923845 EXPONENTIAL 618683 23971 diff --git a/tools/linsched/tests/mcarlo-sims/sim-291 b/tools/linsched/tests/mcarlo-sims/sim-291 new file mode 100644 index 00000000000000..cee6048922e20f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-291 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.290315 1.320986 EXPONENTIAL 672301 1019 +LOGNORMAL 11.484150 2.112704 EXPONENTIAL 631249 27891 +LOGNORMAL 11.953627 2.602855 LOGNORMAL 13.177287 3.668052 3718 +LOGNORMAL 12.298886 3.381904 EXPONENTIAL 695986 16583 +LOGNORMAL 13.681363 3.661438 LOGNORMAL 12.772128 1.148134 32560 diff --git a/tools/linsched/tests/mcarlo-sims/sim-292 b/tools/linsched/tests/mcarlo-sims/sim-292 new file mode 100644 index 00000000000000..4dfec571ca4f9c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-292 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.236985 1.014328 EXPONENTIAL 680421 7189 +LOGNORMAL 11.310426 1.337899 LOGNORMAL 12.116814 3.297454 22070 +LOGNORMAL 11.532708 2.220334 LOGNORMAL 11.957451 3.880974 10793 diff --git a/tools/linsched/tests/mcarlo-sims/sim-293 b/tools/linsched/tests/mcarlo-sims/sim-293 new file mode 100644 index 00000000000000..3c4a6701f32d8d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-293 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.696495 3.983432 LOGNORMAL 13.597454 3.405289 32040 +LOGNORMAL 13.033800 1.076042 LOGNORMAL 13.513298 2.002917 1099 +LOGNORMAL 11.373047 3.794164 LOGNORMAL 12.281773 3.753161 7604 +LOGNORMAL 12.986801 3.157243 EXPONENTIAL 628557 13457 +LOGNORMAL 11.132997 1.275768 LOGNORMAL 12.839485 2.230388 20987 diff --git a/tools/linsched/tests/mcarlo-sims/sim-294 b/tools/linsched/tests/mcarlo-sims/sim-294 new file mode 100644 index 00000000000000..dd08e11d47e0ab --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-294 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 13.235061 2.664727 EXPONENTIAL 628111 23879 +LOGNORMAL 11.949836 1.897673 EXPONENTIAL 665968 11718 +LOGNORMAL 12.283677 2.754058 EXPONENTIAL 638665 23945 +LOGNORMAL 13.635893 1.455409 LOGNORMAL 12.473231 2.593243 28609 diff --git a/tools/linsched/tests/mcarlo-sims/sim-295 b/tools/linsched/tests/mcarlo-sims/sim-295 new file mode 100644 index 00000000000000..b69ad3003d06ae --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-295 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.300996 2.846275 LOGNORMAL 13.299834 2.313637 15779 +LOGNORMAL 12.349766 3.513150 EXPONENTIAL 695492 16236 +LOGNORMAL 11.965113 3.652023 LOGNORMAL 11.617063 3.971319 5837 diff --git a/tools/linsched/tests/mcarlo-sims/sim-296 b/tools/linsched/tests/mcarlo-sims/sim-296 new file mode 100644 index 00000000000000..adfc5e336be779 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-296 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.712383 2.014220 EXPONENTIAL 626468 250 +LOGNORMAL 13.076131 1.530715 LOGNORMAL 12.552446 1.968113 27080 +LOGNORMAL 11.967160 2.065164 LOGNORMAL 11.299979 2.753970 32489 +LOGNORMAL 12.685893 3.810047 LOGNORMAL 11.974626 1.532022 3957 diff --git a/tools/linsched/tests/mcarlo-sims/sim-297 b/tools/linsched/tests/mcarlo-sims/sim-297 new file mode 100644 index 00000000000000..bd1262de09de78 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-297 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.331535 1.116530 EXPONENTIAL 635656 11971 +LOGNORMAL 12.968028 2.647200 EXPONENTIAL 688675 18613 +LOGNORMAL 13.527719 1.373075 EXPONENTIAL 685897 6910 +LOGNORMAL 12.737359 1.789463 LOGNORMAL 13.278867 3.920851 16311 diff --git a/tools/linsched/tests/mcarlo-sims/sim-298 b/tools/linsched/tests/mcarlo-sims/sim-298 new file mode 100644 index 00000000000000..90337fe25c0996 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-298 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.390148 1.215054 LOGNORMAL 11.944805 1.332266 28012 +LOGNORMAL 12.763182 3.796075 LOGNORMAL 13.286915 1.186456 6838 +LOGNORMAL 13.416620 3.133589 LOGNORMAL 11.631773 2.208390 19743 +LOGNORMAL 13.528879 2.870572 EXPONENTIAL 646616 30674 diff --git a/tools/linsched/tests/mcarlo-sims/sim-299 b/tools/linsched/tests/mcarlo-sims/sim-299 new file mode 100644 index 00000000000000..79e42eadd91036 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-299 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.494809 1.248317 EXPONENTIAL 665336 9519 +LOGNORMAL 11.679191 1.157656 LOGNORMAL 13.257051 3.250888 31874 +LOGNORMAL 11.994380 3.550437 LOGNORMAL 13.326236 2.043017 2160 diff --git a/tools/linsched/tests/mcarlo-sims/sim-3 b/tools/linsched/tests/mcarlo-sims/sim-3 new file mode 100644 index 00000000000000..b8f8eb06bc638b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-3 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.660562 2.066516 EXPONENTIAL 620056 2809 +LOGNORMAL 11.929711 2.649428 LOGNORMAL 11.733062 3.578802 2134 +LOGNORMAL 12.731362 3.004924 EXPONENTIAL 690572 3484 +LOGNORMAL 13.008643 1.254807 EXPONENTIAL 645009 18734 +LOGNORMAL 11.307020 1.085926 LOGNORMAL 13.333440 3.123062 16282 diff --git a/tools/linsched/tests/mcarlo-sims/sim-30 b/tools/linsched/tests/mcarlo-sims/sim-30 new file mode 100644 index 00000000000000..5b1c9ad7599561 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-30 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 13.410271 1.422922 LOGNORMAL 11.609872 3.122473 8854 +LOGNORMAL 13.137273 3.151320 LOGNORMAL 12.212589 1.985966 24600 +LOGNORMAL 13.059379 1.980454 LOGNORMAL 12.110958 3.878388 6525 +LOGNORMAL 11.872108 3.513448 EXPONENTIAL 626086 14028 diff --git a/tools/linsched/tests/mcarlo-sims/sim-300 b/tools/linsched/tests/mcarlo-sims/sim-300 new file mode 100644 index 00000000000000..74d658c1f9fa54 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-300 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.233738 3.435827 EXPONENTIAL 695236 8868 +LOGNORMAL 11.764275 3.176827 EXPONENTIAL 637777 28637 +LOGNORMAL 13.452848 3.021470 EXPONENTIAL 670981 14698 +LOGNORMAL 13.476301 1.185491 LOGNORMAL 11.076138 2.652673 12049 diff --git a/tools/linsched/tests/mcarlo-sims/sim-301 b/tools/linsched/tests/mcarlo-sims/sim-301 new file mode 100644 index 00000000000000..0aeaf94c6d45a4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-301 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 11.360711 3.464110 EXPONENTIAL 604052 8688 +LOGNORMAL 12.027825 1.660023 EXPONENTIAL 604190 24275 +LOGNORMAL 11.930995 3.237059 LOGNORMAL 11.772796 2.389476 6267 +LOGNORMAL 11.674642 2.710221 LOGNORMAL 11.393235 1.107138 23924 diff --git a/tools/linsched/tests/mcarlo-sims/sim-302 b/tools/linsched/tests/mcarlo-sims/sim-302 new file mode 100644 index 00000000000000..909db1d76a9e0d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-302 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.680761 2.545770 EXPONENTIAL 645777 24868 +LOGNORMAL 11.014876 2.024910 LOGNORMAL 11.680842 1.913013 17861 diff --git a/tools/linsched/tests/mcarlo-sims/sim-303 b/tools/linsched/tests/mcarlo-sims/sim-303 new file mode 100644 index 00000000000000..e5299b7c63ba79 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-303 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.548310 3.450999 EXPONENTIAL 606659 7932 +LOGNORMAL 12.063613 3.150200 EXPONENTIAL 674185 21921 +LOGNORMAL 13.676691 3.146598 LOGNORMAL 11.022816 3.475556 4289 +LOGNORMAL 11.454529 2.266281 LOGNORMAL 12.120760 3.606798 13060 diff --git a/tools/linsched/tests/mcarlo-sims/sim-304 b/tools/linsched/tests/mcarlo-sims/sim-304 new file mode 100644 index 00000000000000..f048c76a2a513f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-304 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.489885 3.505202 EXPONENTIAL 674525 27934 +LOGNORMAL 11.462162 1.556407 EXPONENTIAL 698697 30925 +LOGNORMAL 13.322880 2.649394 LOGNORMAL 11.164822 2.164474 9127 diff --git a/tools/linsched/tests/mcarlo-sims/sim-305 b/tools/linsched/tests/mcarlo-sims/sim-305 new file mode 100644 index 00000000000000..796a1afab876c9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-305 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.055929 2.991464 EXPONENTIAL 615965 20394 +LOGNORMAL 12.516695 1.090388 LOGNORMAL 11.598551 1.853842 23811 +LOGNORMAL 13.487742 1.474664 EXPONENTIAL 666852 7369 +LOGNORMAL 12.377890 2.190627 EXPONENTIAL 649006 3294 +LOGNORMAL 11.350139 2.780538 EXPONENTIAL 675510 7381 diff --git a/tools/linsched/tests/mcarlo-sims/sim-306 b/tools/linsched/tests/mcarlo-sims/sim-306 new file mode 100644 index 00000000000000..0cdaacf2a80e73 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-306 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 11.551063 1.715900 EXPONENTIAL 600869 7543 +LOGNORMAL 11.443302 2.571994 EXPONENTIAL 676219 17952 +LOGNORMAL 12.523402 2.825066 LOGNORMAL 11.707527 3.401233 69 +LOGNORMAL 11.508342 3.700694 LOGNORMAL 13.820061 3.764414 29015 +LOGNORMAL 11.714509 3.755120 LOGNORMAL 13.719427 1.415941 17538 diff --git a/tools/linsched/tests/mcarlo-sims/sim-307 b/tools/linsched/tests/mcarlo-sims/sim-307 new file mode 100644 index 00000000000000..99ee78bdf64198 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-307 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.177851 1.145770 EXPONENTIAL 680512 28806 +LOGNORMAL 12.750507 3.772290 LOGNORMAL 13.795140 1.911689 5165 +LOGNORMAL 11.349549 1.863197 EXPONENTIAL 606111 20448 +LOGNORMAL 12.949337 3.510732 LOGNORMAL 12.239571 2.465398 16525 +LOGNORMAL 12.710375 1.266126 LOGNORMAL 11.255658 1.851711 8930 diff --git a/tools/linsched/tests/mcarlo-sims/sim-308 b/tools/linsched/tests/mcarlo-sims/sim-308 new file mode 100644 index 00000000000000..d3168d4d9e83f6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-308 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.933716 1.964038 LOGNORMAL 13.991149 2.241562 5270 +LOGNORMAL 13.180274 2.872888 LOGNORMAL 12.185322 2.700314 11837 +LOGNORMAL 12.793803 2.447387 LOGNORMAL 13.293349 1.309978 23388 +LOGNORMAL 13.334093 2.104711 EXPONENTIAL 664668 4406 +LOGNORMAL 12.731079 1.240332 EXPONENTIAL 610314 4291 diff --git a/tools/linsched/tests/mcarlo-sims/sim-309 b/tools/linsched/tests/mcarlo-sims/sim-309 new file mode 100644 index 00000000000000..ec364a0aaece29 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-309 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.996035 1.362661 LOGNORMAL 11.140662 1.109835 475 +LOGNORMAL 13.235543 1.775538 EXPONENTIAL 617729 6140 +LOGNORMAL 12.473637 3.409580 LOGNORMAL 11.195942 3.198814 23726 diff --git a/tools/linsched/tests/mcarlo-sims/sim-31 b/tools/linsched/tests/mcarlo-sims/sim-31 new file mode 100644 index 00000000000000..2ddb71f333b72b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-31 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.730340 1.819258 EXPONENTIAL 657070 20685 +LOGNORMAL 12.698216 3.917848 EXPONENTIAL 630746 26818 +LOGNORMAL 11.857568 2.150220 LOGNORMAL 12.379246 3.993982 15950 +LOGNORMAL 11.401849 1.869831 LOGNORMAL 11.103831 3.079872 10786 diff --git a/tools/linsched/tests/mcarlo-sims/sim-310 b/tools/linsched/tests/mcarlo-sims/sim-310 new file mode 100644 index 00000000000000..0ee8f2cd412a0f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-310 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.114433 1.273762 LOGNORMAL 13.843462 1.071049 10061 +LOGNORMAL 13.150813 2.718698 EXPONENTIAL 660723 20461 +LOGNORMAL 11.905250 2.534618 LOGNORMAL 13.581519 2.586714 28083 diff --git a/tools/linsched/tests/mcarlo-sims/sim-311 b/tools/linsched/tests/mcarlo-sims/sim-311 new file mode 100644 index 00000000000000..b89b8d118f251e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-311 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.322642 2.642152 LOGNORMAL 11.569494 2.479760 28297 +LOGNORMAL 12.666104 1.204865 LOGNORMAL 13.332867 2.497332 4656 +LOGNORMAL 13.786292 3.215799 EXPONENTIAL 624745 25886 +LOGNORMAL 12.364012 2.948959 LOGNORMAL 12.878553 1.833662 20871 diff --git a/tools/linsched/tests/mcarlo-sims/sim-312 b/tools/linsched/tests/mcarlo-sims/sim-312 new file mode 100644 index 00000000000000..d972c70f1dd8ac --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-312 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.749010 3.603915 LOGNORMAL 12.099772 1.860698 1722 +LOGNORMAL 13.202516 1.683129 LOGNORMAL 13.966424 3.681335 16666 diff --git a/tools/linsched/tests/mcarlo-sims/sim-313 b/tools/linsched/tests/mcarlo-sims/sim-313 new file mode 100644 index 00000000000000..66b900d49634e4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-313 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 12.753957 1.759887 EXPONENTIAL 637511 29219 +LOGNORMAL 11.513274 2.589505 EXPONENTIAL 615726 4869 +LOGNORMAL 11.540398 2.468525 LOGNORMAL 11.173717 1.659757 32468 diff --git a/tools/linsched/tests/mcarlo-sims/sim-314 b/tools/linsched/tests/mcarlo-sims/sim-314 new file mode 100644 index 00000000000000..ee32a305c9a66c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-314 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.133210 3.860175 EXPONENTIAL 629307 28222 +LOGNORMAL 12.683855 2.552432 EXPONENTIAL 616282 24299 +LOGNORMAL 13.147615 2.961214 LOGNORMAL 11.935120 3.566380 28565 diff --git a/tools/linsched/tests/mcarlo-sims/sim-315 b/tools/linsched/tests/mcarlo-sims/sim-315 new file mode 100644 index 00000000000000..be27b6d89d4b9a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-315 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.494786 3.867275 LOGNORMAL 11.325107 2.078152 22713 +LOGNORMAL 12.445964 3.314705 EXPONENTIAL 675923 5535 +LOGNORMAL 13.335589 3.240152 LOGNORMAL 12.763835 2.770116 11217 +LOGNORMAL 12.571085 3.217517 LOGNORMAL 12.701351 2.606210 17386 +LOGNORMAL 12.274822 3.931170 EXPONENTIAL 642300 3452 diff --git a/tools/linsched/tests/mcarlo-sims/sim-316 b/tools/linsched/tests/mcarlo-sims/sim-316 new file mode 100644 index 00000000000000..37c04717ed4984 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-316 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.844037 2.724656 EXPONENTIAL 621171 4917 +LOGNORMAL 12.020302 1.221505 LOGNORMAL 12.121782 2.792707 6419 +LOGNORMAL 11.659687 3.356323 EXPONENTIAL 610443 25760 +LOGNORMAL 13.416706 1.578305 LOGNORMAL 12.670179 3.701875 7992 diff --git a/tools/linsched/tests/mcarlo-sims/sim-317 b/tools/linsched/tests/mcarlo-sims/sim-317 new file mode 100644 index 00000000000000..2a462835e1d5b8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-317 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.729141 3.664870 LOGNORMAL 13.003475 1.402019 28715 +LOGNORMAL 12.894462 2.225246 LOGNORMAL 11.314291 3.290408 14491 diff --git a/tools/linsched/tests/mcarlo-sims/sim-318 b/tools/linsched/tests/mcarlo-sims/sim-318 new file mode 100644 index 00000000000000..01199d789dd673 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-318 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 11.069784 3.854242 LOGNORMAL 12.366226 1.167970 24165 +LOGNORMAL 11.372759 1.953734 LOGNORMAL 13.412520 3.217313 611 +LOGNORMAL 11.334117 3.510132 LOGNORMAL 13.683294 3.114496 23701 diff --git a/tools/linsched/tests/mcarlo-sims/sim-319 b/tools/linsched/tests/mcarlo-sims/sim-319 new file mode 100644 index 00000000000000..40a822e169051e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-319 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.270808 3.470019 LOGNORMAL 12.809550 3.111755 10396 +LOGNORMAL 13.649613 1.046473 EXPONENTIAL 640512 17960 diff --git a/tools/linsched/tests/mcarlo-sims/sim-32 b/tools/linsched/tests/mcarlo-sims/sim-32 new file mode 100644 index 00000000000000..eb280056a7018f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-32 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.223771 3.913567 LOGNORMAL 12.692440 2.840377 2785 +LOGNORMAL 11.619145 2.970264 EXPONENTIAL 626400 24436 +LOGNORMAL 12.840593 2.839107 EXPONENTIAL 671777 1719 diff --git a/tools/linsched/tests/mcarlo-sims/sim-320 b/tools/linsched/tests/mcarlo-sims/sim-320 new file mode 100644 index 00000000000000..170b7053c39963 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-320 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.179449 3.007669 EXPONENTIAL 621398 15459 +LOGNORMAL 11.130416 2.903798 EXPONENTIAL 657506 20829 +LOGNORMAL 11.903729 3.969462 EXPONENTIAL 613686 23392 +LOGNORMAL 11.073082 2.281371 LOGNORMAL 13.872042 1.408584 15483 diff --git a/tools/linsched/tests/mcarlo-sims/sim-321 b/tools/linsched/tests/mcarlo-sims/sim-321 new file mode 100644 index 00000000000000..b1513c021de3e2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-321 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.681056 2.503415 LOGNORMAL 12.760053 2.209894 23448 +LOGNORMAL 11.335591 1.272185 LOGNORMAL 11.736451 3.526110 5076 +LOGNORMAL 13.148203 3.855592 EXPONENTIAL 689526 2355 +LOGNORMAL 13.064445 3.123869 LOGNORMAL 11.782459 2.795803 19379 +LOGNORMAL 11.522266 3.728091 LOGNORMAL 12.767733 2.280747 28847 diff --git a/tools/linsched/tests/mcarlo-sims/sim-322 b/tools/linsched/tests/mcarlo-sims/sim-322 new file mode 100644 index 00000000000000..a71fa15ac8ac8d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-322 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.653362 1.058975 EXPONENTIAL 670237 20732 +LOGNORMAL 11.359891 1.681145 EXPONENTIAL 679199 418 +LOGNORMAL 11.236039 2.113470 LOGNORMAL 13.889199 1.767551 31395 +LOGNORMAL 13.151700 2.618422 EXPONENTIAL 694887 10176 diff --git a/tools/linsched/tests/mcarlo-sims/sim-323 b/tools/linsched/tests/mcarlo-sims/sim-323 new file mode 100644 index 00000000000000..7342d6f884e538 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-323 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.263269 3.761101 EXPONENTIAL 643994 28255 +LOGNORMAL 11.885583 1.996350 EXPONENTIAL 604868 25094 +LOGNORMAL 13.582086 3.116908 LOGNORMAL 12.551474 3.629237 8570 +LOGNORMAL 11.110185 1.887084 LOGNORMAL 12.344909 2.890826 7194 diff --git a/tools/linsched/tests/mcarlo-sims/sim-324 b/tools/linsched/tests/mcarlo-sims/sim-324 new file mode 100644 index 00000000000000..742e3508e67929 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-324 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.239957 3.949326 LOGNORMAL 12.792798 3.557996 10066 +LOGNORMAL 12.945736 2.983071 LOGNORMAL 13.611407 3.920863 11198 +LOGNORMAL 13.049532 1.482774 EXPONENTIAL 681226 29773 +LOGNORMAL 12.339348 2.422564 LOGNORMAL 12.207286 2.863053 15432 diff --git a/tools/linsched/tests/mcarlo-sims/sim-325 b/tools/linsched/tests/mcarlo-sims/sim-325 new file mode 100644 index 00000000000000..e305460b110fe4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-325 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 13.966095 1.150996 EXPONENTIAL 661123 15063 +LOGNORMAL 12.538941 2.979025 LOGNORMAL 12.218149 2.427533 20920 diff --git a/tools/linsched/tests/mcarlo-sims/sim-326 b/tools/linsched/tests/mcarlo-sims/sim-326 new file mode 100644 index 00000000000000..cd41d491e19242 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-326 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.698608 2.503675 LOGNORMAL 12.007830 1.594913 4402 +LOGNORMAL 13.190153 3.901807 EXPONENTIAL 663454 14547 +LOGNORMAL 11.414412 3.030384 EXPONENTIAL 629494 26764 +LOGNORMAL 11.806967 3.686316 LOGNORMAL 12.156354 1.846481 671 +LOGNORMAL 12.129294 3.043649 EXPONENTIAL 646078 25411 diff --git a/tools/linsched/tests/mcarlo-sims/sim-327 b/tools/linsched/tests/mcarlo-sims/sim-327 new file mode 100644 index 00000000000000..c75a1031bb8e10 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-327 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.112014 1.611156 EXPONENTIAL 607762 15145 +LOGNORMAL 13.943426 1.155373 LOGNORMAL 13.208866 3.418989 22900 +LOGNORMAL 13.750638 3.967782 EXPONENTIAL 682149 9768 +LOGNORMAL 12.971550 1.838735 LOGNORMAL 12.848975 2.725470 15691 +LOGNORMAL 12.931105 3.081727 EXPONENTIAL 611255 22599 diff --git a/tools/linsched/tests/mcarlo-sims/sim-328 b/tools/linsched/tests/mcarlo-sims/sim-328 new file mode 100644 index 00000000000000..3fd44e5a8b1711 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-328 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.259014 1.240310 EXPONENTIAL 642345 12611 +LOGNORMAL 11.733297 1.526979 EXPONENTIAL 625383 23486 +LOGNORMAL 12.629972 2.933685 EXPONENTIAL 601264 16869 +LOGNORMAL 12.350182 1.516803 EXPONENTIAL 685032 26541 +LOGNORMAL 12.520598 3.697683 EXPONENTIAL 697045 19227 diff --git a/tools/linsched/tests/mcarlo-sims/sim-329 b/tools/linsched/tests/mcarlo-sims/sim-329 new file mode 100644 index 00000000000000..ec867a982945f4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-329 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.238409 1.937950 EXPONENTIAL 669683 11421 +LOGNORMAL 11.192187 3.081173 EXPONENTIAL 696002 16316 diff --git a/tools/linsched/tests/mcarlo-sims/sim-33 b/tools/linsched/tests/mcarlo-sims/sim-33 new file mode 100644 index 00000000000000..b2b1cf326759dc --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-33 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.354931 1.319129 LOGNORMAL 13.823775 3.192262 27133 +LOGNORMAL 12.901455 2.749850 EXPONENTIAL 686610 31795 diff --git a/tools/linsched/tests/mcarlo-sims/sim-330 b/tools/linsched/tests/mcarlo-sims/sim-330 new file mode 100644 index 00000000000000..050122d705f1eb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-330 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 11.826681 2.026490 EXPONENTIAL 624985 20860 +LOGNORMAL 11.382332 3.854275 LOGNORMAL 12.577575 1.299362 27763 +LOGNORMAL 13.730060 3.110030 EXPONENTIAL 678746 5864 +LOGNORMAL 11.368910 3.262077 LOGNORMAL 11.057476 3.993418 11921 +LOGNORMAL 12.096549 1.691062 EXPONENTIAL 629323 1965 diff --git a/tools/linsched/tests/mcarlo-sims/sim-331 b/tools/linsched/tests/mcarlo-sims/sim-331 new file mode 100644 index 00000000000000..04a3aea1a661b5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-331 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.611748 3.650798 EXPONENTIAL 608531 12617 +LOGNORMAL 12.362058 3.103518 EXPONENTIAL 601466 31943 +LOGNORMAL 12.287220 2.308181 EXPONENTIAL 642615 14186 diff --git a/tools/linsched/tests/mcarlo-sims/sim-332 b/tools/linsched/tests/mcarlo-sims/sim-332 new file mode 100644 index 00000000000000..4fcb236a3333ef --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-332 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.373834 3.027631 LOGNORMAL 12.710763 1.792073 23573 +LOGNORMAL 13.003763 3.237212 EXPONENTIAL 657128 5925 diff --git a/tools/linsched/tests/mcarlo-sims/sim-333 b/tools/linsched/tests/mcarlo-sims/sim-333 new file mode 100644 index 00000000000000..8f5287a9bff961 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-333 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.529333 1.499098 LOGNORMAL 13.288677 3.793986 2542 +LOGNORMAL 11.412143 3.895359 LOGNORMAL 12.235175 3.584840 4184 +LOGNORMAL 11.029396 3.065042 EXPONENTIAL 699470 12182 +LOGNORMAL 11.359945 2.594107 EXPONENTIAL 627162 20658 +LOGNORMAL 13.824360 1.018316 EXPONENTIAL 644260 10709 diff --git a/tools/linsched/tests/mcarlo-sims/sim-334 b/tools/linsched/tests/mcarlo-sims/sim-334 new file mode 100644 index 00000000000000..0066bc701f2a85 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-334 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.867086 2.106095 EXPONENTIAL 615261 8901 +LOGNORMAL 11.143295 3.358984 LOGNORMAL 13.193646 2.611480 25053 +LOGNORMAL 12.665566 1.171020 EXPONENTIAL 612402 11691 diff --git a/tools/linsched/tests/mcarlo-sims/sim-335 b/tools/linsched/tests/mcarlo-sims/sim-335 new file mode 100644 index 00000000000000..ee1fc550a5bc15 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-335 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.805630 2.231602 EXPONENTIAL 610271 18980 +LOGNORMAL 12.742295 3.755098 LOGNORMAL 13.526480 1.556122 17495 +LOGNORMAL 11.570912 2.326128 LOGNORMAL 13.773224 2.568488 29097 diff --git a/tools/linsched/tests/mcarlo-sims/sim-336 b/tools/linsched/tests/mcarlo-sims/sim-336 new file mode 100644 index 00000000000000..3ac6c38fcadd8c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-336 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.565743 1.448397 EXPONENTIAL 636602 6426 +LOGNORMAL 12.310654 3.164790 EXPONENTIAL 619595 6035 +LOGNORMAL 12.527574 3.943754 LOGNORMAL 11.627216 3.622570 30348 +LOGNORMAL 12.422258 3.886831 LOGNORMAL 11.381140 1.826526 7328 +LOGNORMAL 13.491820 1.014265 EXPONENTIAL 666792 7033 diff --git a/tools/linsched/tests/mcarlo-sims/sim-337 b/tools/linsched/tests/mcarlo-sims/sim-337 new file mode 100644 index 00000000000000..3f5f30b2e94678 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-337 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 13.368200 2.335951 LOGNORMAL 11.303727 2.746913 5268 +LOGNORMAL 11.289228 2.051478 LOGNORMAL 11.366199 2.700916 14018 diff --git a/tools/linsched/tests/mcarlo-sims/sim-338 b/tools/linsched/tests/mcarlo-sims/sim-338 new file mode 100644 index 00000000000000..99077c25fb0476 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-338 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.185217 3.948303 LOGNORMAL 11.737732 1.056476 19624 +LOGNORMAL 13.087689 3.796078 LOGNORMAL 13.490714 3.436609 27755 +LOGNORMAL 12.984433 2.367270 EXPONENTIAL 680648 3236 diff --git a/tools/linsched/tests/mcarlo-sims/sim-339 b/tools/linsched/tests/mcarlo-sims/sim-339 new file mode 100644 index 00000000000000..cdb643d0d9f4bb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-339 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.355557 3.838317 LOGNORMAL 12.979382 1.472146 8850 +LOGNORMAL 13.785267 3.980584 EXPONENTIAL 612678 29066 +LOGNORMAL 12.436683 3.332051 EXPONENTIAL 643681 14679 diff --git a/tools/linsched/tests/mcarlo-sims/sim-34 b/tools/linsched/tests/mcarlo-sims/sim-34 new file mode 100644 index 00000000000000..6872b35776c5c5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-34 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.820836 3.794255 EXPONENTIAL 659526 27839 +LOGNORMAL 12.820589 2.643289 LOGNORMAL 13.803615 3.359482 11161 +LOGNORMAL 12.994456 2.829046 LOGNORMAL 11.080925 2.101981 26405 +LOGNORMAL 12.078910 2.241054 LOGNORMAL 12.848051 2.192960 24550 diff --git a/tools/linsched/tests/mcarlo-sims/sim-340 b/tools/linsched/tests/mcarlo-sims/sim-340 new file mode 100644 index 00000000000000..09e3962dd4537b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-340 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.004065 2.316002 LOGNORMAL 12.181170 1.929375 3232 +LOGNORMAL 12.491285 3.018965 EXPONENTIAL 665445 3446 +LOGNORMAL 12.448296 3.517302 EXPONENTIAL 643800 31869 diff --git a/tools/linsched/tests/mcarlo-sims/sim-341 b/tools/linsched/tests/mcarlo-sims/sim-341 new file mode 100644 index 00000000000000..72d7511f2824ce --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-341 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.438685 2.982112 EXPONENTIAL 604933 28830 +LOGNORMAL 11.892777 2.900935 LOGNORMAL 12.352642 3.848509 16624 +LOGNORMAL 13.000804 1.512242 LOGNORMAL 13.355572 3.091391 32513 diff --git a/tools/linsched/tests/mcarlo-sims/sim-342 b/tools/linsched/tests/mcarlo-sims/sim-342 new file mode 100644 index 00000000000000..2b1472a59ac2c5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-342 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 13.412437 1.826645 EXPONENTIAL 643070 27352 +LOGNORMAL 13.037505 3.339771 EXPONENTIAL 681940 12079 +LOGNORMAL 13.547980 2.907738 LOGNORMAL 13.688445 2.701407 32718 +LOGNORMAL 12.849998 1.919948 LOGNORMAL 11.244193 1.149869 28962 diff --git a/tools/linsched/tests/mcarlo-sims/sim-343 b/tools/linsched/tests/mcarlo-sims/sim-343 new file mode 100644 index 00000000000000..0c90d390965125 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-343 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.985966 3.133000 LOGNORMAL 13.408113 1.153031 22643 +LOGNORMAL 11.826753 3.233762 EXPONENTIAL 640633 4359 +LOGNORMAL 11.324405 2.275204 LOGNORMAL 11.995720 2.067253 3926 diff --git a/tools/linsched/tests/mcarlo-sims/sim-344 b/tools/linsched/tests/mcarlo-sims/sim-344 new file mode 100644 index 00000000000000..e7bc833f5fe96d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-344 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.261226 3.418264 LOGNORMAL 13.866933 2.540862 8681 +LOGNORMAL 13.044145 3.945714 LOGNORMAL 11.695534 2.845067 4312 +LOGNORMAL 13.939550 2.023882 LOGNORMAL 12.502949 1.065148 3058 +LOGNORMAL 11.386775 3.532747 EXPONENTIAL 616737 790 +LOGNORMAL 11.942680 1.629911 LOGNORMAL 13.822745 3.867076 16597 diff --git a/tools/linsched/tests/mcarlo-sims/sim-345 b/tools/linsched/tests/mcarlo-sims/sim-345 new file mode 100644 index 00000000000000..0e81e59fc8ecaf --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-345 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.691596 3.656695 LOGNORMAL 11.272989 2.127488 3530 +LOGNORMAL 11.025771 2.129174 LOGNORMAL 13.629400 3.321534 7886 +LOGNORMAL 12.419017 3.410558 EXPONENTIAL 656526 10170 diff --git a/tools/linsched/tests/mcarlo-sims/sim-346 b/tools/linsched/tests/mcarlo-sims/sim-346 new file mode 100644 index 00000000000000..79f3f34dd95649 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-346 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.352177 2.035014 LOGNORMAL 12.006222 1.574662 7219 +LOGNORMAL 11.312491 3.040184 EXPONENTIAL 606051 6456 +LOGNORMAL 12.906955 2.198438 LOGNORMAL 13.304158 2.975183 18320 +LOGNORMAL 12.268342 3.020886 EXPONENTIAL 662744 1392 diff --git a/tools/linsched/tests/mcarlo-sims/sim-347 b/tools/linsched/tests/mcarlo-sims/sim-347 new file mode 100644 index 00000000000000..4ca73308b13580 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-347 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.336497 1.511277 EXPONENTIAL 633177 28097 +LOGNORMAL 11.221087 2.802257 EXPONENTIAL 626108 16179 diff --git a/tools/linsched/tests/mcarlo-sims/sim-348 b/tools/linsched/tests/mcarlo-sims/sim-348 new file mode 100644 index 00000000000000..11fa8fa6d6573f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-348 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.263093 3.804588 LOGNORMAL 11.147462 1.398243 20427 +LOGNORMAL 13.151125 1.952402 LOGNORMAL 11.173294 3.553171 28835 +LOGNORMAL 11.277471 2.460839 EXPONENTIAL 643821 2210 diff --git a/tools/linsched/tests/mcarlo-sims/sim-349 b/tools/linsched/tests/mcarlo-sims/sim-349 new file mode 100644 index 00000000000000..ed8125b9bebb97 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-349 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 11.896082 1.445343 EXPONENTIAL 678885 10272 +LOGNORMAL 12.050010 2.516965 LOGNORMAL 11.981464 2.462489 5656 diff --git a/tools/linsched/tests/mcarlo-sims/sim-35 b/tools/linsched/tests/mcarlo-sims/sim-35 new file mode 100644 index 00000000000000..0a888de0e3d1e6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-35 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.995082 1.346442 EXPONENTIAL 634912 24623 +LOGNORMAL 12.258703 3.028590 EXPONENTIAL 662303 1513 +LOGNORMAL 11.749603 2.569983 LOGNORMAL 12.568012 2.574210 16999 diff --git a/tools/linsched/tests/mcarlo-sims/sim-350 b/tools/linsched/tests/mcarlo-sims/sim-350 new file mode 100644 index 00000000000000..707437c5e10990 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-350 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.149839 3.336494 EXPONENTIAL 644174 27286 +LOGNORMAL 12.477412 3.866447 LOGNORMAL 12.459745 3.926547 28950 diff --git a/tools/linsched/tests/mcarlo-sims/sim-351 b/tools/linsched/tests/mcarlo-sims/sim-351 new file mode 100644 index 00000000000000..186aeb16456ce5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-351 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.740202 3.573126 LOGNORMAL 13.554070 3.248214 24078 +LOGNORMAL 12.352859 1.496716 LOGNORMAL 12.267157 1.110392 6543 +LOGNORMAL 12.695978 2.307722 LOGNORMAL 12.205578 1.152894 13169 +LOGNORMAL 11.532771 3.287882 EXPONENTIAL 620575 5227 +LOGNORMAL 11.864655 1.259405 EXPONENTIAL 689089 16191 diff --git a/tools/linsched/tests/mcarlo-sims/sim-352 b/tools/linsched/tests/mcarlo-sims/sim-352 new file mode 100644 index 00000000000000..26abc841cd78cc --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-352 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.306178 3.936140 EXPONENTIAL 615176 6425 +LOGNORMAL 13.969890 1.942581 LOGNORMAL 13.440791 1.369487 29584 +LOGNORMAL 11.627794 1.335571 EXPONENTIAL 661636 17606 +LOGNORMAL 12.118151 1.772196 EXPONENTIAL 679760 15700 +LOGNORMAL 12.849228 3.979133 EXPONENTIAL 630931 3878 diff --git a/tools/linsched/tests/mcarlo-sims/sim-353 b/tools/linsched/tests/mcarlo-sims/sim-353 new file mode 100644 index 00000000000000..ca420c9e562e61 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-353 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.813940 1.886845 EXPONENTIAL 641081 7697 +LOGNORMAL 11.891789 1.298835 EXPONENTIAL 677011 10321 +LOGNORMAL 13.842009 3.647987 LOGNORMAL 11.488429 2.018316 10317 diff --git a/tools/linsched/tests/mcarlo-sims/sim-354 b/tools/linsched/tests/mcarlo-sims/sim-354 new file mode 100644 index 00000000000000..4627e66e410e08 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-354 @@ -0,0 +1,3 @@ +ONE_GROUP 2 +LOGNORMAL 12.973625 3.721904 LOGNORMAL 11.700035 3.487474 14466 +LOGNORMAL 12.786749 3.885500 EXPONENTIAL 615776 11455 diff --git a/tools/linsched/tests/mcarlo-sims/sim-355 b/tools/linsched/tests/mcarlo-sims/sim-355 new file mode 100644 index 00000000000000..f2ce12bf60f9ee --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-355 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.006146 3.291553 LOGNORMAL 13.564120 1.169454 18311 +LOGNORMAL 13.858655 1.407707 EXPONENTIAL 633628 4042 +LOGNORMAL 11.532796 3.700269 EXPONENTIAL 688357 21711 diff --git a/tools/linsched/tests/mcarlo-sims/sim-356 b/tools/linsched/tests/mcarlo-sims/sim-356 new file mode 100644 index 00000000000000..db16c8c0d3e830 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-356 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.483943 1.629085 LOGNORMAL 12.884939 1.169601 9559 +LOGNORMAL 11.992272 1.108442 LOGNORMAL 12.967509 2.920509 12402 diff --git a/tools/linsched/tests/mcarlo-sims/sim-357 b/tools/linsched/tests/mcarlo-sims/sim-357 new file mode 100644 index 00000000000000..3a4c3feb96f96f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-357 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.630225 1.186315 EXPONENTIAL 607934 24221 +LOGNORMAL 13.899481 3.583974 LOGNORMAL 12.440812 3.723145 16761 +LOGNORMAL 13.337755 3.649251 EXPONENTIAL 664775 2904 diff --git a/tools/linsched/tests/mcarlo-sims/sim-358 b/tools/linsched/tests/mcarlo-sims/sim-358 new file mode 100644 index 00000000000000..1300c7f03b7249 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-358 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.946875 3.128045 EXPONENTIAL 683984 2551 +LOGNORMAL 13.036742 2.515741 EXPONENTIAL 633561 22069 +LOGNORMAL 11.994136 2.442696 LOGNORMAL 12.267967 2.719164 28176 +LOGNORMAL 11.139484 2.315421 EXPONENTIAL 616398 4474 diff --git a/tools/linsched/tests/mcarlo-sims/sim-359 b/tools/linsched/tests/mcarlo-sims/sim-359 new file mode 100644 index 00000000000000..2a63c4fe875876 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-359 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.837029 2.949984 LOGNORMAL 11.923591 1.794243 5029 +LOGNORMAL 13.057708 3.900263 LOGNORMAL 11.392188 1.505626 32529 +LOGNORMAL 12.336635 1.825667 LOGNORMAL 13.062193 1.276393 27202 +LOGNORMAL 12.139042 1.870885 EXPONENTIAL 603774 12678 +LOGNORMAL 11.406942 3.467708 LOGNORMAL 13.053195 3.045065 28679 diff --git a/tools/linsched/tests/mcarlo-sims/sim-36 b/tools/linsched/tests/mcarlo-sims/sim-36 new file mode 100644 index 00000000000000..1a2f7b172da742 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-36 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.089186 2.947187 LOGNORMAL 13.900658 2.365686 15447 +LOGNORMAL 12.306086 1.391817 LOGNORMAL 12.508120 3.978301 5472 +LOGNORMAL 13.533188 3.284507 LOGNORMAL 13.884209 1.895670 7627 +LOGNORMAL 12.625564 3.854940 EXPONENTIAL 689799 10394 diff --git a/tools/linsched/tests/mcarlo-sims/sim-360 b/tools/linsched/tests/mcarlo-sims/sim-360 new file mode 100644 index 00000000000000..49421d6d31a5ec --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-360 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.997151 1.117506 EXPONENTIAL 620949 6425 +LOGNORMAL 12.139317 3.498194 EXPONENTIAL 625003 1887 diff --git a/tools/linsched/tests/mcarlo-sims/sim-361 b/tools/linsched/tests/mcarlo-sims/sim-361 new file mode 100644 index 00000000000000..5865c38569cf89 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-361 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 12.545372 3.065004 LOGNORMAL 12.632859 3.468171 26829 +LOGNORMAL 11.550074 3.089686 LOGNORMAL 12.446898 1.009315 15271 diff --git a/tools/linsched/tests/mcarlo-sims/sim-362 b/tools/linsched/tests/mcarlo-sims/sim-362 new file mode 100644 index 00000000000000..c46b34eeb28d4e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-362 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.059039 1.273473 LOGNORMAL 13.324157 3.098474 30600 +LOGNORMAL 12.452504 2.239473 EXPONENTIAL 672026 18849 +LOGNORMAL 11.978774 2.249217 EXPONENTIAL 662779 6087 diff --git a/tools/linsched/tests/mcarlo-sims/sim-363 b/tools/linsched/tests/mcarlo-sims/sim-363 new file mode 100644 index 00000000000000..6bd0a07b5aa69e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-363 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.303511 2.110868 LOGNORMAL 11.892328 1.360761 1927 +LOGNORMAL 11.048853 3.067404 EXPONENTIAL 697614 23582 +LOGNORMAL 11.456495 2.305588 EXPONENTIAL 691379 21931 diff --git a/tools/linsched/tests/mcarlo-sims/sim-364 b/tools/linsched/tests/mcarlo-sims/sim-364 new file mode 100644 index 00000000000000..6b0e1973a57433 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-364 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.608414 2.612116 LOGNORMAL 12.488450 3.372976 24650 +LOGNORMAL 13.096443 3.920276 EXPONENTIAL 640760 26638 +LOGNORMAL 12.751224 3.827591 LOGNORMAL 13.167511 1.363346 16826 +LOGNORMAL 11.297839 2.779375 LOGNORMAL 12.866906 1.088552 19649 +LOGNORMAL 12.645210 1.044615 LOGNORMAL 12.601343 1.776025 19739 diff --git a/tools/linsched/tests/mcarlo-sims/sim-365 b/tools/linsched/tests/mcarlo-sims/sim-365 new file mode 100644 index 00000000000000..784c6d59073dad --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-365 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.893859 1.081849 LOGNORMAL 13.698352 1.200565 15649 +LOGNORMAL 11.580967 3.318720 LOGNORMAL 11.219709 3.650002 28808 +LOGNORMAL 13.358565 2.408410 LOGNORMAL 13.131531 2.636244 10887 +LOGNORMAL 11.019822 1.152926 EXPONENTIAL 693716 15498 +LOGNORMAL 13.867825 2.542767 EXPONENTIAL 659867 17337 diff --git a/tools/linsched/tests/mcarlo-sims/sim-366 b/tools/linsched/tests/mcarlo-sims/sim-366 new file mode 100644 index 00000000000000..757be195b798fd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-366 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 11.271596 2.717996 LOGNORMAL 13.999388 2.710375 11453 +LOGNORMAL 12.788576 1.595234 EXPONENTIAL 604644 21309 +LOGNORMAL 13.134637 3.842862 EXPONENTIAL 647609 1719 +LOGNORMAL 11.716917 2.215751 EXPONENTIAL 670983 4088 diff --git a/tools/linsched/tests/mcarlo-sims/sim-367 b/tools/linsched/tests/mcarlo-sims/sim-367 new file mode 100644 index 00000000000000..f7d6991f160194 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-367 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.253371 3.410902 LOGNORMAL 11.872822 3.519561 16850 +LOGNORMAL 13.721145 3.278878 EXPONENTIAL 642535 2979 diff --git a/tools/linsched/tests/mcarlo-sims/sim-368 b/tools/linsched/tests/mcarlo-sims/sim-368 new file mode 100644 index 00000000000000..7e5b8e16b85547 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-368 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.812170 1.142846 EXPONENTIAL 673911 20360 +LOGNORMAL 13.240757 2.404592 EXPONENTIAL 684064 15705 +LOGNORMAL 12.044543 3.641478 EXPONENTIAL 652444 18389 diff --git a/tools/linsched/tests/mcarlo-sims/sim-369 b/tools/linsched/tests/mcarlo-sims/sim-369 new file mode 100644 index 00000000000000..140b44a52551f4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-369 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.973534 3.182598 EXPONENTIAL 647135 2612 +LOGNORMAL 11.660338 2.296648 EXPONENTIAL 607492 7842 diff --git a/tools/linsched/tests/mcarlo-sims/sim-37 b/tools/linsched/tests/mcarlo-sims/sim-37 new file mode 100644 index 00000000000000..22eb950436d8dd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-37 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 13.935532 3.484374 LOGNORMAL 12.496847 3.505916 15443 +LOGNORMAL 12.960695 2.392779 LOGNORMAL 11.998699 1.135417 7444 +LOGNORMAL 12.538325 1.624504 EXPONENTIAL 641741 26304 +LOGNORMAL 11.466894 3.080380 EXPONENTIAL 623282 146 diff --git a/tools/linsched/tests/mcarlo-sims/sim-370 b/tools/linsched/tests/mcarlo-sims/sim-370 new file mode 100644 index 00000000000000..f2e7883218e339 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-370 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.784012 2.889623 LOGNORMAL 11.522264 3.682917 28861 +LOGNORMAL 11.330603 1.443154 EXPONENTIAL 692854 17189 diff --git a/tools/linsched/tests/mcarlo-sims/sim-371 b/tools/linsched/tests/mcarlo-sims/sim-371 new file mode 100644 index 00000000000000..ad683d30d36149 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-371 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.526074 2.722144 LOGNORMAL 11.088786 2.234041 6435 +LOGNORMAL 11.931527 3.165906 EXPONENTIAL 685031 6131 +LOGNORMAL 11.221787 2.578368 EXPONENTIAL 680502 338 +LOGNORMAL 13.327455 1.535583 LOGNORMAL 12.891954 2.066301 20126 diff --git a/tools/linsched/tests/mcarlo-sims/sim-372 b/tools/linsched/tests/mcarlo-sims/sim-372 new file mode 100644 index 00000000000000..ce73c5b1d5443d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-372 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.349172 1.538982 LOGNORMAL 11.533050 1.966939 10458 +LOGNORMAL 12.523783 3.228358 EXPONENTIAL 607315 13503 diff --git a/tools/linsched/tests/mcarlo-sims/sim-373 b/tools/linsched/tests/mcarlo-sims/sim-373 new file mode 100644 index 00000000000000..5b8b2800fe9efa --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-373 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 12.389190 3.110781 LOGNORMAL 12.550546 3.018706 8767 +LOGNORMAL 11.430135 3.274735 EXPONENTIAL 694717 11602 diff --git a/tools/linsched/tests/mcarlo-sims/sim-374 b/tools/linsched/tests/mcarlo-sims/sim-374 new file mode 100644 index 00000000000000..e46a8cb88c91cd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-374 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.607859 3.290261 EXPONENTIAL 649054 19112 +LOGNORMAL 13.700111 3.768087 EXPONENTIAL 638370 12862 +LOGNORMAL 13.389974 2.295717 LOGNORMAL 13.009989 2.881858 23822 diff --git a/tools/linsched/tests/mcarlo-sims/sim-375 b/tools/linsched/tests/mcarlo-sims/sim-375 new file mode 100644 index 00000000000000..51412d5b7257cb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-375 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.045265 1.769314 EXPONENTIAL 697219 6884 +LOGNORMAL 12.698267 1.778709 LOGNORMAL 11.803113 1.921146 12340 +LOGNORMAL 12.152075 1.919174 EXPONENTIAL 673739 31449 diff --git a/tools/linsched/tests/mcarlo-sims/sim-376 b/tools/linsched/tests/mcarlo-sims/sim-376 new file mode 100644 index 00000000000000..952a28b101116b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-376 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.750021 2.606851 LOGNORMAL 12.315208 1.699872 6873 +LOGNORMAL 12.761112 2.007691 EXPONENTIAL 603400 22352 +LOGNORMAL 11.377710 1.169257 EXPONENTIAL 663551 6444 diff --git a/tools/linsched/tests/mcarlo-sims/sim-377 b/tools/linsched/tests/mcarlo-sims/sim-377 new file mode 100644 index 00000000000000..8ff168cd2c2415 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-377 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.461401 1.769200 EXPONENTIAL 601532 27276 +LOGNORMAL 11.322695 3.540369 EXPONENTIAL 609484 25329 +LOGNORMAL 13.120923 1.357336 LOGNORMAL 11.682445 1.848880 23319 +LOGNORMAL 13.074998 3.486975 LOGNORMAL 12.455714 2.185165 26001 +LOGNORMAL 12.438943 2.314391 LOGNORMAL 13.718212 1.982355 17802 diff --git a/tools/linsched/tests/mcarlo-sims/sim-378 b/tools/linsched/tests/mcarlo-sims/sim-378 new file mode 100644 index 00000000000000..45bf76ecaf9c58 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-378 @@ -0,0 +1,3 @@ +ONE_GROUP 2 +LOGNORMAL 11.592097 1.378133 EXPONENTIAL 677546 3121 +LOGNORMAL 12.706613 1.051704 EXPONENTIAL 600092 2143 diff --git a/tools/linsched/tests/mcarlo-sims/sim-379 b/tools/linsched/tests/mcarlo-sims/sim-379 new file mode 100644 index 00000000000000..e85efe29862a96 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-379 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.566424 3.887254 EXPONENTIAL 693846 27280 +LOGNORMAL 13.924932 2.337278 LOGNORMAL 11.378986 1.617774 15145 diff --git a/tools/linsched/tests/mcarlo-sims/sim-38 b/tools/linsched/tests/mcarlo-sims/sim-38 new file mode 100644 index 00000000000000..b223ae78a3f7b0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-38 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.039333 2.072546 EXPONENTIAL 694210 29979 +LOGNORMAL 13.901417 3.118786 EXPONENTIAL 632313 28806 +LOGNORMAL 11.815882 3.524229 LOGNORMAL 12.386941 1.312775 16788 +LOGNORMAL 12.723999 2.249810 EXPONENTIAL 669022 10197 +LOGNORMAL 13.838678 1.657218 LOGNORMAL 12.168042 3.278684 26356 diff --git a/tools/linsched/tests/mcarlo-sims/sim-380 b/tools/linsched/tests/mcarlo-sims/sim-380 new file mode 100644 index 00000000000000..c5d82e8a59005c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-380 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.215079 1.839894 LOGNORMAL 13.227400 2.910348 12433 +LOGNORMAL 11.752569 1.421505 EXPONENTIAL 691552 6940 +LOGNORMAL 12.743764 1.443967 EXPONENTIAL 622077 8834 diff --git a/tools/linsched/tests/mcarlo-sims/sim-381 b/tools/linsched/tests/mcarlo-sims/sim-381 new file mode 100644 index 00000000000000..cfc687fef5980a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-381 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.472380 1.292009 EXPONENTIAL 677365 1122 +LOGNORMAL 12.834193 3.273425 LOGNORMAL 12.509346 3.579035 27338 +LOGNORMAL 12.621622 3.601970 LOGNORMAL 11.661896 1.494355 4288 +LOGNORMAL 13.445796 1.490998 EXPONENTIAL 652947 25322 +LOGNORMAL 12.551689 1.245090 EXPONENTIAL 645787 12160 diff --git a/tools/linsched/tests/mcarlo-sims/sim-382 b/tools/linsched/tests/mcarlo-sims/sim-382 new file mode 100644 index 00000000000000..3a47ad6781663f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-382 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.419812 1.777778 LOGNORMAL 11.073435 2.217970 9149 +LOGNORMAL 12.605768 1.136237 EXPONENTIAL 671616 6888 +LOGNORMAL 11.607438 1.209635 EXPONENTIAL 625329 19269 +LOGNORMAL 11.638362 1.942977 EXPONENTIAL 659553 30634 +LOGNORMAL 12.453330 1.110649 EXPONENTIAL 628348 23065 diff --git a/tools/linsched/tests/mcarlo-sims/sim-383 b/tools/linsched/tests/mcarlo-sims/sim-383 new file mode 100644 index 00000000000000..8f6d7687a45b9f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-383 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.693168 2.071459 EXPONENTIAL 639770 1854 +LOGNORMAL 13.256762 1.403133 EXPONENTIAL 696131 13079 diff --git a/tools/linsched/tests/mcarlo-sims/sim-384 b/tools/linsched/tests/mcarlo-sims/sim-384 new file mode 100644 index 00000000000000..9dcf42a9812649 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-384 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.572551 3.864781 EXPONENTIAL 602026 7901 +LOGNORMAL 13.494830 3.603079 LOGNORMAL 12.159901 1.452281 5305 +LOGNORMAL 11.696255 2.961202 EXPONENTIAL 687691 6874 +LOGNORMAL 13.150812 2.704516 LOGNORMAL 13.125652 2.838648 1901 diff --git a/tools/linsched/tests/mcarlo-sims/sim-385 b/tools/linsched/tests/mcarlo-sims/sim-385 new file mode 100644 index 00000000000000..30006368a981db --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-385 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 12.348177 3.808788 LOGNORMAL 13.261614 1.953611 3618 +LOGNORMAL 11.042740 2.323814 EXPONENTIAL 673517 31577 +LOGNORMAL 12.071927 1.876859 LOGNORMAL 12.058469 3.692870 14821 +LOGNORMAL 11.003556 3.774028 EXPONENTIAL 606116 14599 +LOGNORMAL 11.944362 2.885561 EXPONENTIAL 677606 5185 diff --git a/tools/linsched/tests/mcarlo-sims/sim-386 b/tools/linsched/tests/mcarlo-sims/sim-386 new file mode 100644 index 00000000000000..cdd673ddfca2dd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-386 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.550602 3.967966 EXPONENTIAL 680624 9062 +LOGNORMAL 13.437700 3.419050 LOGNORMAL 11.606163 3.773632 21504 +LOGNORMAL 12.786700 3.060468 EXPONENTIAL 625332 4462 diff --git a/tools/linsched/tests/mcarlo-sims/sim-387 b/tools/linsched/tests/mcarlo-sims/sim-387 new file mode 100644 index 00000000000000..05299d0f6c4e01 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-387 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.234758 2.573040 LOGNORMAL 12.217796 2.495700 25370 +LOGNORMAL 11.501578 1.016052 LOGNORMAL 12.208470 1.762748 26947 +LOGNORMAL 13.660208 2.111534 LOGNORMAL 11.064061 3.674401 32168 +LOGNORMAL 13.748232 2.542323 EXPONENTIAL 648503 24933 +LOGNORMAL 11.580429 3.277479 LOGNORMAL 11.290767 3.921674 27267 diff --git a/tools/linsched/tests/mcarlo-sims/sim-388 b/tools/linsched/tests/mcarlo-sims/sim-388 new file mode 100644 index 00000000000000..e7c58fbad77972 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-388 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.770542 2.491043 LOGNORMAL 13.284156 2.803878 16685 +LOGNORMAL 12.637787 2.293635 LOGNORMAL 12.695971 2.178000 6538 +LOGNORMAL 11.656408 2.250012 LOGNORMAL 12.360405 2.330199 514 +LOGNORMAL 12.314639 1.140259 EXPONENTIAL 695248 2528 +LOGNORMAL 12.200808 1.982495 LOGNORMAL 13.584969 3.565788 31622 diff --git a/tools/linsched/tests/mcarlo-sims/sim-389 b/tools/linsched/tests/mcarlo-sims/sim-389 new file mode 100644 index 00000000000000..0fbfe82abbbf28 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-389 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.626033 2.740962 LOGNORMAL 12.688393 3.820886 21692 +LOGNORMAL 12.250756 1.451274 EXPONENTIAL 606029 18373 +LOGNORMAL 12.477091 1.467168 EXPONENTIAL 634339 30017 +LOGNORMAL 11.774530 1.527941 EXPONENTIAL 698448 22942 +LOGNORMAL 12.777153 1.609246 EXPONENTIAL 645621 23592 diff --git a/tools/linsched/tests/mcarlo-sims/sim-39 b/tools/linsched/tests/mcarlo-sims/sim-39 new file mode 100644 index 00000000000000..2b1e438178cf57 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-39 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.570662 3.116316 EXPONENTIAL 617093 19274 +LOGNORMAL 12.176992 3.708083 LOGNORMAL 12.823115 3.092413 1574 +LOGNORMAL 13.499903 1.865533 LOGNORMAL 11.416112 1.600256 18493 diff --git a/tools/linsched/tests/mcarlo-sims/sim-390 b/tools/linsched/tests/mcarlo-sims/sim-390 new file mode 100644 index 00000000000000..c94c8e8b50551a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-390 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 12.128071 3.482243 EXPONENTIAL 629162 24657 +LOGNORMAL 12.707203 1.957586 LOGNORMAL 13.968793 1.496502 12440 +LOGNORMAL 11.327283 2.642354 EXPONENTIAL 630267 31674 +LOGNORMAL 12.319358 2.450032 EXPONENTIAL 684604 3339 diff --git a/tools/linsched/tests/mcarlo-sims/sim-391 b/tools/linsched/tests/mcarlo-sims/sim-391 new file mode 100644 index 00000000000000..86ead397d186e6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-391 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.460485 3.367649 LOGNORMAL 12.828188 1.360056 30763 +LOGNORMAL 11.165982 3.662465 EXPONENTIAL 693889 10146 +LOGNORMAL 13.679652 1.911717 EXPONENTIAL 633836 14025 +LOGNORMAL 12.601596 3.024687 LOGNORMAL 12.362474 1.097733 32504 +LOGNORMAL 11.001334 2.421750 LOGNORMAL 12.062185 3.149997 28357 diff --git a/tools/linsched/tests/mcarlo-sims/sim-392 b/tools/linsched/tests/mcarlo-sims/sim-392 new file mode 100644 index 00000000000000..68a330bea68d40 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-392 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.761955 3.186012 LOGNORMAL 11.396751 3.191632 13512 +LOGNORMAL 12.700702 3.700634 LOGNORMAL 12.722330 1.206622 30603 +LOGNORMAL 13.585950 2.065379 EXPONENTIAL 612047 27052 +LOGNORMAL 11.498138 3.212813 EXPONENTIAL 644440 17408 diff --git a/tools/linsched/tests/mcarlo-sims/sim-393 b/tools/linsched/tests/mcarlo-sims/sim-393 new file mode 100644 index 00000000000000..4c251f0100a772 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-393 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.113240 3.220076 EXPONENTIAL 643567 17866 +LOGNORMAL 11.885993 2.882913 LOGNORMAL 12.722844 3.843154 2646 +LOGNORMAL 12.827755 3.080499 EXPONENTIAL 670640 12122 +LOGNORMAL 11.799327 1.284405 LOGNORMAL 12.147936 1.362575 28455 +LOGNORMAL 11.603885 1.501724 LOGNORMAL 11.734103 3.069352 16403 diff --git a/tools/linsched/tests/mcarlo-sims/sim-394 b/tools/linsched/tests/mcarlo-sims/sim-394 new file mode 100644 index 00000000000000..b43bbc014d3a81 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-394 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.736754 3.632683 EXPONENTIAL 652445 3796 +LOGNORMAL 11.133675 3.670296 LOGNORMAL 13.730107 3.901299 16647 +LOGNORMAL 12.588452 1.105535 EXPONENTIAL 687918 1395 diff --git a/tools/linsched/tests/mcarlo-sims/sim-395 b/tools/linsched/tests/mcarlo-sims/sim-395 new file mode 100644 index 00000000000000..2fa6a75a9d2798 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-395 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.875994 3.834658 LOGNORMAL 12.563678 1.733378 22393 +LOGNORMAL 13.723233 2.385404 EXPONENTIAL 621704 28066 +LOGNORMAL 11.987086 3.958032 LOGNORMAL 11.077168 1.959123 23116 +LOGNORMAL 11.386219 3.175548 EXPONENTIAL 626632 20559 +LOGNORMAL 12.974775 2.044458 EXPONENTIAL 609987 12570 diff --git a/tools/linsched/tests/mcarlo-sims/sim-396 b/tools/linsched/tests/mcarlo-sims/sim-396 new file mode 100644 index 00000000000000..8bc226bcc80933 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-396 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.269927 3.669447 LOGNORMAL 12.459305 2.540208 32720 +LOGNORMAL 12.257139 3.741405 LOGNORMAL 12.155432 1.343860 25955 +LOGNORMAL 11.829986 3.572682 LOGNORMAL 12.654120 3.792814 5709 +LOGNORMAL 11.536299 2.569412 EXPONENTIAL 626454 14557 diff --git a/tools/linsched/tests/mcarlo-sims/sim-397 b/tools/linsched/tests/mcarlo-sims/sim-397 new file mode 100644 index 00000000000000..d561bf85214b23 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-397 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 11.573065 2.510062 EXPONENTIAL 679646 9519 +LOGNORMAL 11.587770 3.647629 EXPONENTIAL 628173 23118 +LOGNORMAL 12.792416 3.139653 EXPONENTIAL 636559 27515 +LOGNORMAL 11.123778 2.334623 EXPONENTIAL 628381 1994 +LOGNORMAL 11.022089 3.251042 EXPONENTIAL 608008 3949 diff --git a/tools/linsched/tests/mcarlo-sims/sim-398 b/tools/linsched/tests/mcarlo-sims/sim-398 new file mode 100644 index 00000000000000..b910fb150cf557 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-398 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.155629 2.656958 EXPONENTIAL 678096 10030 +LOGNORMAL 12.032099 1.492827 EXPONENTIAL 603167 2501 +LOGNORMAL 11.630599 3.482629 EXPONENTIAL 694259 15307 +LOGNORMAL 13.519127 3.970504 LOGNORMAL 12.604532 1.366783 12080 +LOGNORMAL 12.116230 2.484408 EXPONENTIAL 622052 19221 diff --git a/tools/linsched/tests/mcarlo-sims/sim-399 b/tools/linsched/tests/mcarlo-sims/sim-399 new file mode 100644 index 00000000000000..76b6099c158ebf --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-399 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.724325 2.732472 LOGNORMAL 11.265710 2.795842 25477 +LOGNORMAL 11.355534 3.457603 LOGNORMAL 12.993312 1.594773 18980 diff --git a/tools/linsched/tests/mcarlo-sims/sim-4 b/tools/linsched/tests/mcarlo-sims/sim-4 new file mode 100644 index 00000000000000..d81f64fe2879f2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-4 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.352650 1.982653 EXPONENTIAL 681399 8703 +LOGNORMAL 11.261561 2.063949 EXPONENTIAL 611590 7059 +LOGNORMAL 13.733747 2.091916 LOGNORMAL 11.119722 3.175149 4753 +LOGNORMAL 13.269429 1.296797 LOGNORMAL 12.989370 1.344456 4151 +LOGNORMAL 13.232286 1.030805 LOGNORMAL 13.695460 3.588340 20329 diff --git a/tools/linsched/tests/mcarlo-sims/sim-40 b/tools/linsched/tests/mcarlo-sims/sim-40 new file mode 100644 index 00000000000000..c58d4772cc14e5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-40 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.898150 1.208706 LOGNORMAL 11.084641 1.553989 29014 +LOGNORMAL 13.421128 3.894776 EXPONENTIAL 631009 7113 +LOGNORMAL 11.004512 1.834231 LOGNORMAL 13.918148 2.311061 21177 +LOGNORMAL 13.524234 2.806694 LOGNORMAL 13.895737 3.653509 17129 diff --git a/tools/linsched/tests/mcarlo-sims/sim-400 b/tools/linsched/tests/mcarlo-sims/sim-400 new file mode 100644 index 00000000000000..e12bab4c3be3e4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-400 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.378683 3.525069 LOGNORMAL 11.592400 3.464412 4948 +LOGNORMAL 11.942198 2.513606 EXPONENTIAL 615293 9815 +LOGNORMAL 13.939885 1.646518 EXPONENTIAL 659617 16957 +LOGNORMAL 12.546739 2.036893 LOGNORMAL 11.664243 1.929348 26939 +LOGNORMAL 12.657302 3.267680 EXPONENTIAL 681701 25786 diff --git a/tools/linsched/tests/mcarlo-sims/sim-401 b/tools/linsched/tests/mcarlo-sims/sim-401 new file mode 100644 index 00000000000000..37408ddf0937e8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-401 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.826105 3.347549 EXPONENTIAL 651264 16107 +LOGNORMAL 12.198129 1.949848 EXPONENTIAL 611438 22445 +LOGNORMAL 13.174517 2.105788 LOGNORMAL 13.400602 3.918735 30319 +LOGNORMAL 13.389912 1.243524 EXPONENTIAL 673890 14904 diff --git a/tools/linsched/tests/mcarlo-sims/sim-402 b/tools/linsched/tests/mcarlo-sims/sim-402 new file mode 100644 index 00000000000000..86b11c9b8ee205 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-402 @@ -0,0 +1,3 @@ +ONE_GROUP 2 +LOGNORMAL 11.928396 1.544694 EXPONENTIAL 692516 5446 +LOGNORMAL 11.170845 1.398263 LOGNORMAL 12.646684 1.810565 22198 diff --git a/tools/linsched/tests/mcarlo-sims/sim-403 b/tools/linsched/tests/mcarlo-sims/sim-403 new file mode 100644 index 00000000000000..81a3f783f479bf --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-403 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.549209 1.557112 EXPONENTIAL 630371 7160 +LOGNORMAL 11.751978 3.501817 LOGNORMAL 11.001015 3.060436 25349 +LOGNORMAL 13.163932 1.205528 LOGNORMAL 12.076841 3.471242 3600 +LOGNORMAL 12.561606 2.904187 LOGNORMAL 12.138998 1.145568 24259 +LOGNORMAL 13.169930 3.010659 LOGNORMAL 13.293795 2.819371 11561 diff --git a/tools/linsched/tests/mcarlo-sims/sim-404 b/tools/linsched/tests/mcarlo-sims/sim-404 new file mode 100644 index 00000000000000..3ca9bac01246d7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-404 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.193543 2.871694 LOGNORMAL 12.086689 3.979722 3460 +LOGNORMAL 12.878058 2.515531 EXPONENTIAL 698718 10020 +LOGNORMAL 11.648974 3.310025 LOGNORMAL 13.183917 1.097855 27725 diff --git a/tools/linsched/tests/mcarlo-sims/sim-405 b/tools/linsched/tests/mcarlo-sims/sim-405 new file mode 100644 index 00000000000000..a50aebd8033ab8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-405 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.248185 3.248283 LOGNORMAL 11.551009 3.816579 5804 +LOGNORMAL 12.690112 2.709768 EXPONENTIAL 647495 16399 diff --git a/tools/linsched/tests/mcarlo-sims/sim-406 b/tools/linsched/tests/mcarlo-sims/sim-406 new file mode 100644 index 00000000000000..0dc523d4660b31 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-406 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.598445 3.071167 LOGNORMAL 12.758189 3.881157 2476 +LOGNORMAL 11.449705 2.194706 LOGNORMAL 11.329991 3.155736 15137 diff --git a/tools/linsched/tests/mcarlo-sims/sim-407 b/tools/linsched/tests/mcarlo-sims/sim-407 new file mode 100644 index 00000000000000..940b71e8b00f24 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-407 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.892094 2.423119 LOGNORMAL 11.807966 2.492943 29852 +LOGNORMAL 11.917083 3.409893 EXPONENTIAL 648309 30374 +LOGNORMAL 11.544069 1.170893 LOGNORMAL 12.746870 2.648096 19616 diff --git a/tools/linsched/tests/mcarlo-sims/sim-408 b/tools/linsched/tests/mcarlo-sims/sim-408 new file mode 100644 index 00000000000000..0e3c9946239a43 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-408 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.764872 1.209544 LOGNORMAL 12.371072 1.609434 25314 +LOGNORMAL 13.807452 1.845486 LOGNORMAL 13.807294 2.185209 6012 diff --git a/tools/linsched/tests/mcarlo-sims/sim-409 b/tools/linsched/tests/mcarlo-sims/sim-409 new file mode 100644 index 00000000000000..d021820606f54b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-409 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 13.322177 2.827264 EXPONENTIAL 655909 1661 +LOGNORMAL 13.988909 3.586614 LOGNORMAL 12.038762 2.470280 6600 diff --git a/tools/linsched/tests/mcarlo-sims/sim-41 b/tools/linsched/tests/mcarlo-sims/sim-41 new file mode 100644 index 00000000000000..177059901881ac --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-41 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.843004 1.366466 EXPONENTIAL 686098 20835 +LOGNORMAL 11.353960 1.005594 EXPONENTIAL 675731 26653 +LOGNORMAL 13.649138 2.066183 EXPONENTIAL 644855 29782 diff --git a/tools/linsched/tests/mcarlo-sims/sim-410 b/tools/linsched/tests/mcarlo-sims/sim-410 new file mode 100644 index 00000000000000..f5f31877c5184c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-410 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.049584 2.359601 EXPONENTIAL 605257 28867 +LOGNORMAL 12.141371 2.019409 EXPONENTIAL 663196 20814 diff --git a/tools/linsched/tests/mcarlo-sims/sim-411 b/tools/linsched/tests/mcarlo-sims/sim-411 new file mode 100644 index 00000000000000..8cea82a627c1e7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-411 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.898172 1.572867 LOGNORMAL 13.420959 1.058124 9414 +LOGNORMAL 11.363380 3.334516 LOGNORMAL 12.366311 2.583290 4610 +LOGNORMAL 13.476546 2.313752 EXPONENTIAL 665894 28888 +LOGNORMAL 11.644335 3.344830 LOGNORMAL 12.149037 1.871461 5301 diff --git a/tools/linsched/tests/mcarlo-sims/sim-412 b/tools/linsched/tests/mcarlo-sims/sim-412 new file mode 100644 index 00000000000000..9f907f22c10db3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-412 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.962692 2.956844 EXPONENTIAL 650405 25550 +LOGNORMAL 11.014303 1.387300 EXPONENTIAL 657660 14676 +LOGNORMAL 12.079791 2.053013 LOGNORMAL 11.774664 3.780691 26457 +LOGNORMAL 12.323118 2.649615 EXPONENTIAL 646495 18080 +LOGNORMAL 11.857858 1.026361 EXPONENTIAL 629501 29837 diff --git a/tools/linsched/tests/mcarlo-sims/sim-413 b/tools/linsched/tests/mcarlo-sims/sim-413 new file mode 100644 index 00000000000000..155d8d23a31bb7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-413 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.011589 3.771408 LOGNORMAL 11.338041 3.449516 9934 +LOGNORMAL 11.370389 1.121733 EXPONENTIAL 639787 25324 diff --git a/tools/linsched/tests/mcarlo-sims/sim-414 b/tools/linsched/tests/mcarlo-sims/sim-414 new file mode 100644 index 00000000000000..5e050573d3d7bb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-414 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 12.016421 1.983396 EXPONENTIAL 674607 23666 +LOGNORMAL 13.610633 2.905642 EXPONENTIAL 678305 28243 +LOGNORMAL 13.045522 3.095622 LOGNORMAL 13.782204 3.501044 10171 +LOGNORMAL 13.227970 3.491092 LOGNORMAL 11.076961 1.480647 15529 diff --git a/tools/linsched/tests/mcarlo-sims/sim-415 b/tools/linsched/tests/mcarlo-sims/sim-415 new file mode 100644 index 00000000000000..345893fe9babc8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-415 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.402401 1.147429 LOGNORMAL 11.245107 1.506896 23300 +LOGNORMAL 12.930328 2.015744 LOGNORMAL 11.283378 2.728323 1239 +LOGNORMAL 12.566316 1.075199 EXPONENTIAL 663095 3667 diff --git a/tools/linsched/tests/mcarlo-sims/sim-416 b/tools/linsched/tests/mcarlo-sims/sim-416 new file mode 100644 index 00000000000000..548e4e44c68b3c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-416 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.511239 3.397295 EXPONENTIAL 658153 6619 +LOGNORMAL 13.906027 2.597259 LOGNORMAL 11.426165 2.554882 10183 +LOGNORMAL 12.374807 1.380148 EXPONENTIAL 630757 14979 +LOGNORMAL 11.339745 2.100648 EXPONENTIAL 623401 5042 diff --git a/tools/linsched/tests/mcarlo-sims/sim-417 b/tools/linsched/tests/mcarlo-sims/sim-417 new file mode 100644 index 00000000000000..825ec417572472 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-417 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.526295 2.445359 LOGNORMAL 13.148851 2.746446 10216 +LOGNORMAL 11.423142 2.747314 EXPONENTIAL 699822 15345 diff --git a/tools/linsched/tests/mcarlo-sims/sim-418 b/tools/linsched/tests/mcarlo-sims/sim-418 new file mode 100644 index 00000000000000..ae20a0bf2bd1d6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-418 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.530116 3.666190 EXPONENTIAL 623116 17328 +LOGNORMAL 11.214777 1.764596 EXPONENTIAL 600190 10277 diff --git a/tools/linsched/tests/mcarlo-sims/sim-419 b/tools/linsched/tests/mcarlo-sims/sim-419 new file mode 100644 index 00000000000000..10cbe9d378c05f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-419 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.926106 3.058053 LOGNORMAL 11.846214 3.312901 8672 +LOGNORMAL 11.653057 2.933235 LOGNORMAL 11.718462 1.189960 15842 diff --git a/tools/linsched/tests/mcarlo-sims/sim-42 b/tools/linsched/tests/mcarlo-sims/sim-42 new file mode 100644 index 00000000000000..d966acedfe0439 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-42 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 12.796350 3.249331 LOGNORMAL 12.029304 2.512869 24967 +LOGNORMAL 13.914207 2.081875 LOGNORMAL 12.862935 3.344375 3113 +LOGNORMAL 13.315280 3.909148 LOGNORMAL 13.071618 3.689017 11609 +LOGNORMAL 11.453631 2.172502 EXPONENTIAL 638752 28145 diff --git a/tools/linsched/tests/mcarlo-sims/sim-420 b/tools/linsched/tests/mcarlo-sims/sim-420 new file mode 100644 index 00000000000000..023c3314815d7b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-420 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.266102 3.369007 LOGNORMAL 12.672097 2.935638 16044 +LOGNORMAL 12.572335 3.241016 LOGNORMAL 12.163897 2.624952 14459 +LOGNORMAL 11.699142 3.474721 LOGNORMAL 12.462716 2.868370 20580 +LOGNORMAL 13.985266 2.366954 EXPONENTIAL 671255 30580 diff --git a/tools/linsched/tests/mcarlo-sims/sim-421 b/tools/linsched/tests/mcarlo-sims/sim-421 new file mode 100644 index 00000000000000..2ae82e8832376b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-421 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 11.362849 3.410647 LOGNORMAL 13.359688 3.276573 15788 +LOGNORMAL 11.151360 3.907771 LOGNORMAL 13.987615 2.848882 14679 diff --git a/tools/linsched/tests/mcarlo-sims/sim-422 b/tools/linsched/tests/mcarlo-sims/sim-422 new file mode 100644 index 00000000000000..145c44f190f6fb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-422 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.644650 1.629453 EXPONENTIAL 604854 399 +LOGNORMAL 12.706021 3.098980 EXPONENTIAL 611873 1940 +LOGNORMAL 12.967775 1.387315 EXPONENTIAL 685777 24171 +LOGNORMAL 11.478024 1.153294 LOGNORMAL 12.394784 1.134794 1665 +LOGNORMAL 11.809791 3.161001 EXPONENTIAL 648755 22008 diff --git a/tools/linsched/tests/mcarlo-sims/sim-423 b/tools/linsched/tests/mcarlo-sims/sim-423 new file mode 100644 index 00000000000000..232dec965a0da2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-423 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.614999 1.291871 EXPONENTIAL 613273 1808 +LOGNORMAL 12.890807 3.797913 EXPONENTIAL 633085 20461 +LOGNORMAL 12.544707 3.887258 LOGNORMAL 13.725346 1.890792 802 +LOGNORMAL 11.598316 3.893785 EXPONENTIAL 624925 2016 diff --git a/tools/linsched/tests/mcarlo-sims/sim-424 b/tools/linsched/tests/mcarlo-sims/sim-424 new file mode 100644 index 00000000000000..6c6723f7f64961 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-424 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.980807 3.430807 LOGNORMAL 12.346744 3.724459 28802 +LOGNORMAL 13.886397 2.678252 EXPONENTIAL 672451 13453 +LOGNORMAL 13.996859 2.202695 EXPONENTIAL 637567 23156 diff --git a/tools/linsched/tests/mcarlo-sims/sim-425 b/tools/linsched/tests/mcarlo-sims/sim-425 new file mode 100644 index 00000000000000..410e70ed6e4f66 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-425 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.135221 2.660776 LOGNORMAL 12.071352 1.219738 23622 +LOGNORMAL 11.267406 1.290581 EXPONENTIAL 627631 13560 diff --git a/tools/linsched/tests/mcarlo-sims/sim-426 b/tools/linsched/tests/mcarlo-sims/sim-426 new file mode 100644 index 00000000000000..4611cc57e0b45d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-426 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 12.681247 3.725367 EXPONENTIAL 671342 22467 +LOGNORMAL 11.747662 2.951468 LOGNORMAL 13.559343 1.875930 3300 +LOGNORMAL 11.352385 1.529097 LOGNORMAL 13.811573 2.107774 5124 diff --git a/tools/linsched/tests/mcarlo-sims/sim-427 b/tools/linsched/tests/mcarlo-sims/sim-427 new file mode 100644 index 00000000000000..eb1824a658beb3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-427 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.033910 2.931408 EXPONENTIAL 626356 25555 +LOGNORMAL 11.619815 2.233450 EXPONENTIAL 644887 24137 +LOGNORMAL 11.328886 2.586884 EXPONENTIAL 634135 14913 +LOGNORMAL 11.042714 1.897152 LOGNORMAL 11.600373 2.472782 8552 +LOGNORMAL 13.909393 2.160167 EXPONENTIAL 632748 20900 diff --git a/tools/linsched/tests/mcarlo-sims/sim-428 b/tools/linsched/tests/mcarlo-sims/sim-428 new file mode 100644 index 00000000000000..a227ea2bb6b33d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-428 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.194688 2.119123 EXPONENTIAL 635144 9493 +LOGNORMAL 13.917372 1.267830 EXPONENTIAL 618759 13314 diff --git a/tools/linsched/tests/mcarlo-sims/sim-429 b/tools/linsched/tests/mcarlo-sims/sim-429 new file mode 100644 index 00000000000000..c435f3f8f43442 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-429 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.337326 3.436970 EXPONENTIAL 669578 26364 +LOGNORMAL 12.939662 2.893657 EXPONENTIAL 629568 19104 +LOGNORMAL 11.718231 3.301702 LOGNORMAL 13.477498 3.313543 29194 +LOGNORMAL 11.626072 2.392922 EXPONENTIAL 693759 18315 diff --git a/tools/linsched/tests/mcarlo-sims/sim-43 b/tools/linsched/tests/mcarlo-sims/sim-43 new file mode 100644 index 00000000000000..12146604a6620c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-43 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.022343 3.523198 EXPONENTIAL 687253 27044 +LOGNORMAL 11.690944 3.698424 EXPONENTIAL 636164 26183 +LOGNORMAL 11.589357 3.323042 LOGNORMAL 13.273168 1.139263 28656 diff --git a/tools/linsched/tests/mcarlo-sims/sim-430 b/tools/linsched/tests/mcarlo-sims/sim-430 new file mode 100644 index 00000000000000..56d3579bc2c3c5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-430 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.936829 3.291691 LOGNORMAL 13.237052 3.139759 29816 +LOGNORMAL 13.214525 2.521890 EXPONENTIAL 637792 8240 +LOGNORMAL 12.872627 1.238927 EXPONENTIAL 694922 18909 +LOGNORMAL 13.035403 1.014726 LOGNORMAL 11.528625 2.608558 28494 diff --git a/tools/linsched/tests/mcarlo-sims/sim-431 b/tools/linsched/tests/mcarlo-sims/sim-431 new file mode 100644 index 00000000000000..7ab209ab30c135 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-431 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.993867 3.923062 LOGNORMAL 13.624910 2.868745 20213 +LOGNORMAL 12.923190 2.050886 EXPONENTIAL 625534 21868 +LOGNORMAL 12.517234 1.159968 LOGNORMAL 13.034219 2.120338 30057 diff --git a/tools/linsched/tests/mcarlo-sims/sim-432 b/tools/linsched/tests/mcarlo-sims/sim-432 new file mode 100644 index 00000000000000..afb29f90c765eb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-432 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.100569 1.263825 EXPONENTIAL 609434 15180 +LOGNORMAL 12.545289 1.669218 EXPONENTIAL 662375 14941 diff --git a/tools/linsched/tests/mcarlo-sims/sim-433 b/tools/linsched/tests/mcarlo-sims/sim-433 new file mode 100644 index 00000000000000..d98ed1f91cf8e7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-433 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 13.790804 1.038361 EXPONENTIAL 679692 17258 +LOGNORMAL 11.402293 3.337244 LOGNORMAL 11.055207 1.872339 11218 +LOGNORMAL 12.346523 3.007834 EXPONENTIAL 680022 7769 +LOGNORMAL 12.298771 1.446287 EXPONENTIAL 653861 9325 +LOGNORMAL 12.642106 2.868261 EXPONENTIAL 637648 8471 diff --git a/tools/linsched/tests/mcarlo-sims/sim-434 b/tools/linsched/tests/mcarlo-sims/sim-434 new file mode 100644 index 00000000000000..f866e226551618 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-434 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.684165 1.769255 EXPONENTIAL 675668 5241 +LOGNORMAL 11.196983 2.687017 EXPONENTIAL 620842 21949 +LOGNORMAL 13.532214 1.914662 EXPONENTIAL 648413 1819 diff --git a/tools/linsched/tests/mcarlo-sims/sim-435 b/tools/linsched/tests/mcarlo-sims/sim-435 new file mode 100644 index 00000000000000..4f59cc15847dfa --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-435 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.220589 1.433442 LOGNORMAL 12.019415 1.307623 10533 +LOGNORMAL 11.005029 1.524905 LOGNORMAL 11.758222 3.439341 1289 diff --git a/tools/linsched/tests/mcarlo-sims/sim-436 b/tools/linsched/tests/mcarlo-sims/sim-436 new file mode 100644 index 00000000000000..0d94742b82b548 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-436 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.851471 3.668180 EXPONENTIAL 672612 16129 +LOGNORMAL 11.082763 2.997857 EXPONENTIAL 662426 30224 +LOGNORMAL 11.335362 3.429735 EXPONENTIAL 629982 20213 +LOGNORMAL 12.491949 2.182248 EXPONENTIAL 604173 25502 diff --git a/tools/linsched/tests/mcarlo-sims/sim-437 b/tools/linsched/tests/mcarlo-sims/sim-437 new file mode 100644 index 00000000000000..e706ae45bfa410 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-437 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.423530 2.275578 LOGNORMAL 11.074308 1.888703 17868 +LOGNORMAL 13.045666 2.503310 EXPONENTIAL 690061 5232 +LOGNORMAL 12.164726 1.557384 EXPONENTIAL 610896 5551 +LOGNORMAL 13.472040 1.581420 LOGNORMAL 13.339710 3.513921 20254 +LOGNORMAL 11.209251 1.874319 EXPONENTIAL 694318 254 diff --git a/tools/linsched/tests/mcarlo-sims/sim-438 b/tools/linsched/tests/mcarlo-sims/sim-438 new file mode 100644 index 00000000000000..27d7cbfd2d41c0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-438 @@ -0,0 +1,3 @@ +ONE_GROUP 2 +LOGNORMAL 13.831590 2.537937 LOGNORMAL 12.726935 3.602120 27174 +LOGNORMAL 12.997443 2.019184 LOGNORMAL 13.994725 2.351342 2583 diff --git a/tools/linsched/tests/mcarlo-sims/sim-439 b/tools/linsched/tests/mcarlo-sims/sim-439 new file mode 100644 index 00000000000000..ea1fbc8e87ec6f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-439 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.364608 2.965138 EXPONENTIAL 658970 32325 +LOGNORMAL 11.852053 2.459352 EXPONENTIAL 622284 14615 diff --git a/tools/linsched/tests/mcarlo-sims/sim-44 b/tools/linsched/tests/mcarlo-sims/sim-44 new file mode 100644 index 00000000000000..db8bc3566fffd3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-44 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.458043 2.332023 EXPONENTIAL 669491 27539 +LOGNORMAL 11.222224 3.912091 LOGNORMAL 11.108721 1.273114 15100 +LOGNORMAL 11.772095 2.603739 EXPONENTIAL 628329 15973 +LOGNORMAL 12.602539 3.873930 LOGNORMAL 11.116988 2.214232 1709 diff --git a/tools/linsched/tests/mcarlo-sims/sim-440 b/tools/linsched/tests/mcarlo-sims/sim-440 new file mode 100644 index 00000000000000..a1d5a3626d662d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-440 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.686772 2.583845 EXPONENTIAL 687827 14630 +LOGNORMAL 11.750819 2.022539 EXPONENTIAL 666438 16713 +LOGNORMAL 12.879657 2.391831 EXPONENTIAL 654231 16213 +LOGNORMAL 12.612122 2.942018 EXPONENTIAL 616288 3262 +LOGNORMAL 11.093953 2.060157 EXPONENTIAL 617570 15309 diff --git a/tools/linsched/tests/mcarlo-sims/sim-441 b/tools/linsched/tests/mcarlo-sims/sim-441 new file mode 100644 index 00000000000000..e129b859650381 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-441 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.129501 3.528606 LOGNORMAL 13.464090 2.954610 14620 +LOGNORMAL 11.638964 3.060030 LOGNORMAL 11.928704 3.723903 4124 +LOGNORMAL 12.971781 2.728989 LOGNORMAL 11.583159 1.160586 26553 +LOGNORMAL 11.774137 3.916107 LOGNORMAL 11.725812 1.728314 29718 +LOGNORMAL 12.580295 2.012199 EXPONENTIAL 688603 6279 diff --git a/tools/linsched/tests/mcarlo-sims/sim-442 b/tools/linsched/tests/mcarlo-sims/sim-442 new file mode 100644 index 00000000000000..b4797b9464e796 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-442 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.230839 3.716615 EXPONENTIAL 697297 1180 +LOGNORMAL 13.664518 2.553480 EXPONENTIAL 697304 22546 +LOGNORMAL 13.674035 3.505887 LOGNORMAL 13.289263 1.644176 15422 +LOGNORMAL 13.014034 1.873668 LOGNORMAL 11.995377 2.296722 19200 diff --git a/tools/linsched/tests/mcarlo-sims/sim-443 b/tools/linsched/tests/mcarlo-sims/sim-443 new file mode 100644 index 00000000000000..4b683d568647d6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-443 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.976794 2.975291 EXPONENTIAL 647704 4537 +LOGNORMAL 12.406831 2.612843 LOGNORMAL 13.633163 3.573476 16516 +LOGNORMAL 13.017740 1.163084 EXPONENTIAL 622714 13640 +LOGNORMAL 13.643231 1.778577 EXPONENTIAL 614457 16976 diff --git a/tools/linsched/tests/mcarlo-sims/sim-444 b/tools/linsched/tests/mcarlo-sims/sim-444 new file mode 100644 index 00000000000000..bf5311565ab7b8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-444 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.472496 2.239006 EXPONENTIAL 673983 1215 +LOGNORMAL 11.947913 2.572036 LOGNORMAL 12.048739 2.148863 18920 diff --git a/tools/linsched/tests/mcarlo-sims/sim-445 b/tools/linsched/tests/mcarlo-sims/sim-445 new file mode 100644 index 00000000000000..d49068bde2e323 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-445 @@ -0,0 +1,3 @@ +ROOT 2 +LOGNORMAL 13.828727 2.415063 LOGNORMAL 12.532488 2.523462 27934 +LOGNORMAL 11.453149 3.081484 LOGNORMAL 12.177968 2.107066 8752 diff --git a/tools/linsched/tests/mcarlo-sims/sim-446 b/tools/linsched/tests/mcarlo-sims/sim-446 new file mode 100644 index 00000000000000..57a25d131e3361 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-446 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.168929 3.194609 LOGNORMAL 11.919799 1.061473 12323 +LOGNORMAL 13.694052 3.925015 EXPONENTIAL 608834 30080 +LOGNORMAL 12.403672 3.509276 LOGNORMAL 11.226356 1.360826 28639 +LOGNORMAL 13.118975 1.617153 EXPONENTIAL 655647 21228 diff --git a/tools/linsched/tests/mcarlo-sims/sim-447 b/tools/linsched/tests/mcarlo-sims/sim-447 new file mode 100644 index 00000000000000..21270842b9daa5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-447 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.979329 1.584761 EXPONENTIAL 661099 26397 +LOGNORMAL 11.006351 2.733324 EXPONENTIAL 620533 16977 +LOGNORMAL 11.354547 1.871609 EXPONENTIAL 642703 10762 +LOGNORMAL 11.019966 3.564676 EXPONENTIAL 640382 13178 diff --git a/tools/linsched/tests/mcarlo-sims/sim-448 b/tools/linsched/tests/mcarlo-sims/sim-448 new file mode 100644 index 00000000000000..538118ad34c04f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-448 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.021885 3.816854 EXPONENTIAL 622837 29324 +LOGNORMAL 13.266833 2.660288 EXPONENTIAL 609845 24368 +LOGNORMAL 12.239760 2.643131 EXPONENTIAL 643686 6913 +LOGNORMAL 12.054844 2.768295 EXPONENTIAL 661583 10609 +LOGNORMAL 11.482715 1.993884 EXPONENTIAL 630654 322 diff --git a/tools/linsched/tests/mcarlo-sims/sim-449 b/tools/linsched/tests/mcarlo-sims/sim-449 new file mode 100644 index 00000000000000..b6840738c5e32a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-449 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.310634 2.831903 EXPONENTIAL 695903 25829 +LOGNORMAL 12.376372 3.686962 EXPONENTIAL 612158 19406 +LOGNORMAL 11.575542 2.140704 EXPONENTIAL 670816 24306 +LOGNORMAL 13.371486 3.559704 EXPONENTIAL 616991 14036 diff --git a/tools/linsched/tests/mcarlo-sims/sim-45 b/tools/linsched/tests/mcarlo-sims/sim-45 new file mode 100644 index 00000000000000..756307520b5673 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-45 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.446499 2.314075 EXPONENTIAL 637086 31556 +LOGNORMAL 13.695835 3.895204 LOGNORMAL 12.525639 1.408919 29445 +LOGNORMAL 11.832418 2.449011 LOGNORMAL 12.861925 1.371680 3469 +LOGNORMAL 13.443689 2.078892 EXPONENTIAL 669892 32183 +LOGNORMAL 11.875452 2.727621 LOGNORMAL 11.133690 3.921335 8290 diff --git a/tools/linsched/tests/mcarlo-sims/sim-450 b/tools/linsched/tests/mcarlo-sims/sim-450 new file mode 100644 index 00000000000000..d1b199f8b6cb2c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-450 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 12.047240 3.970807 EXPONENTIAL 607225 31974 +LOGNORMAL 11.785929 1.109901 LOGNORMAL 13.952993 2.949413 4419 +LOGNORMAL 12.938629 3.535975 EXPONENTIAL 643949 2807 +LOGNORMAL 12.349941 3.465930 EXPONENTIAL 660191 11247 diff --git a/tools/linsched/tests/mcarlo-sims/sim-451 b/tools/linsched/tests/mcarlo-sims/sim-451 new file mode 100644 index 00000000000000..b08d21b79ee8b8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-451 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.599441 3.803710 EXPONENTIAL 669024 17590 +LOGNORMAL 11.821814 1.226312 EXPONENTIAL 647660 19946 +LOGNORMAL 11.425764 1.811894 EXPONENTIAL 657500 1164 diff --git a/tools/linsched/tests/mcarlo-sims/sim-452 b/tools/linsched/tests/mcarlo-sims/sim-452 new file mode 100644 index 00000000000000..aafd2682deff58 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-452 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.986727 3.925263 EXPONENTIAL 622076 26871 +LOGNORMAL 11.938792 2.269757 LOGNORMAL 12.714802 3.682688 21743 +LOGNORMAL 11.558640 3.065688 EXPONENTIAL 687696 27073 +LOGNORMAL 12.942741 3.651518 LOGNORMAL 12.834826 1.915448 17946 +LOGNORMAL 11.227846 2.409348 EXPONENTIAL 690123 2424 diff --git a/tools/linsched/tests/mcarlo-sims/sim-453 b/tools/linsched/tests/mcarlo-sims/sim-453 new file mode 100644 index 00000000000000..5f9fcbde455613 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-453 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.500128 1.658528 LOGNORMAL 12.990162 2.656006 12530 +LOGNORMAL 12.284912 2.518135 EXPONENTIAL 640194 4313 +LOGNORMAL 12.012323 2.109053 EXPONENTIAL 647732 15596 +LOGNORMAL 12.768877 3.517556 EXPONENTIAL 646484 21086 +LOGNORMAL 13.712377 2.924421 EXPONENTIAL 626018 17678 diff --git a/tools/linsched/tests/mcarlo-sims/sim-454 b/tools/linsched/tests/mcarlo-sims/sim-454 new file mode 100644 index 00000000000000..bdf5a2e5e10c1d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-454 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.994036 2.758485 EXPONENTIAL 652626 1063 +LOGNORMAL 13.625871 1.016407 EXPONENTIAL 686165 23507 diff --git a/tools/linsched/tests/mcarlo-sims/sim-455 b/tools/linsched/tests/mcarlo-sims/sim-455 new file mode 100644 index 00000000000000..357f6ae2f67107 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-455 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.937764 3.992922 EXPONENTIAL 601681 32685 +LOGNORMAL 12.728049 1.311306 LOGNORMAL 11.837337 1.119160 21725 +LOGNORMAL 13.394709 3.873433 EXPONENTIAL 621817 15182 +LOGNORMAL 12.828424 2.314783 EXPONENTIAL 642355 6837 +LOGNORMAL 11.968541 1.268157 EXPONENTIAL 688328 8850 diff --git a/tools/linsched/tests/mcarlo-sims/sim-456 b/tools/linsched/tests/mcarlo-sims/sim-456 new file mode 100644 index 00000000000000..158ad390fc3868 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-456 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.833424 2.362687 EXPONENTIAL 656807 615 +LOGNORMAL 13.774594 1.603911 LOGNORMAL 11.740614 1.497279 4134 +LOGNORMAL 12.550685 2.362085 EXPONENTIAL 673555 22424 +LOGNORMAL 12.144503 3.659028 LOGNORMAL 13.585156 3.713937 25378 diff --git a/tools/linsched/tests/mcarlo-sims/sim-457 b/tools/linsched/tests/mcarlo-sims/sim-457 new file mode 100644 index 00000000000000..5dce60cace00b1 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-457 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 12.676032 3.073326 LOGNORMAL 13.318463 3.401599 16115 +LOGNORMAL 11.320278 1.908693 LOGNORMAL 11.175002 2.258423 24874 +LOGNORMAL 13.875717 3.177421 LOGNORMAL 13.363866 1.488896 12052 +LOGNORMAL 11.484537 2.606532 LOGNORMAL 13.410753 3.517908 3833 diff --git a/tools/linsched/tests/mcarlo-sims/sim-458 b/tools/linsched/tests/mcarlo-sims/sim-458 new file mode 100644 index 00000000000000..b55d956ce4fbc5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-458 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.641102 2.004048 EXPONENTIAL 653500 395 +LOGNORMAL 11.667257 1.583386 LOGNORMAL 11.349191 1.851114 9516 +LOGNORMAL 11.884605 3.553367 LOGNORMAL 12.244505 1.397387 13379 +LOGNORMAL 11.088602 2.130901 LOGNORMAL 11.473934 1.406443 23409 +LOGNORMAL 12.086548 1.610868 EXPONENTIAL 671936 32437 diff --git a/tools/linsched/tests/mcarlo-sims/sim-459 b/tools/linsched/tests/mcarlo-sims/sim-459 new file mode 100644 index 00000000000000..8e64f5dfff3d77 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-459 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.026518 1.695489 LOGNORMAL 13.362074 1.371751 31631 +LOGNORMAL 11.660813 1.291965 LOGNORMAL 12.067707 2.947085 8483 +LOGNORMAL 12.306669 2.188498 EXPONENTIAL 619762 17213 +LOGNORMAL 11.387260 2.682252 EXPONENTIAL 638639 32703 diff --git a/tools/linsched/tests/mcarlo-sims/sim-46 b/tools/linsched/tests/mcarlo-sims/sim-46 new file mode 100644 index 00000000000000..1a9b0cf3cfc0b6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-46 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.546082 3.994394 EXPONENTIAL 658682 4416 +LOGNORMAL 11.724567 1.792487 EXPONENTIAL 623087 10421 +LOGNORMAL 13.234389 3.377052 LOGNORMAL 13.250802 3.233488 11467 +LOGNORMAL 11.818803 1.617682 LOGNORMAL 11.341558 2.562255 26158 +LOGNORMAL 12.811300 2.514172 EXPONENTIAL 668838 9066 diff --git a/tools/linsched/tests/mcarlo-sims/sim-460 b/tools/linsched/tests/mcarlo-sims/sim-460 new file mode 100644 index 00000000000000..2c8f87bb3d7140 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-460 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.956463 2.273051 LOGNORMAL 12.596397 2.652047 3554 +LOGNORMAL 11.344962 2.776473 LOGNORMAL 12.489884 3.486841 6356 +LOGNORMAL 12.366947 1.275465 EXPONENTIAL 651511 18109 diff --git a/tools/linsched/tests/mcarlo-sims/sim-461 b/tools/linsched/tests/mcarlo-sims/sim-461 new file mode 100644 index 00000000000000..054f84939d805e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-461 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.854505 3.664732 LOGNORMAL 12.840769 2.810130 2313 +LOGNORMAL 12.391713 3.524240 LOGNORMAL 12.243242 1.164479 32503 +LOGNORMAL 11.538588 2.050895 LOGNORMAL 11.588084 2.922445 18084 +LOGNORMAL 12.031857 3.413801 EXPONENTIAL 636665 27832 +LOGNORMAL 13.917245 2.129306 EXPONENTIAL 677604 28284 diff --git a/tools/linsched/tests/mcarlo-sims/sim-462 b/tools/linsched/tests/mcarlo-sims/sim-462 new file mode 100644 index 00000000000000..afa4134d701204 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-462 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.700935 2.607307 LOGNORMAL 13.212843 1.252199 5571 +LOGNORMAL 13.226248 1.551589 LOGNORMAL 12.125542 2.987876 860 +LOGNORMAL 13.646911 3.637715 EXPONENTIAL 679781 15776 diff --git a/tools/linsched/tests/mcarlo-sims/sim-463 b/tools/linsched/tests/mcarlo-sims/sim-463 new file mode 100644 index 00000000000000..4da55cc728e58e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-463 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.019697 2.039125 LOGNORMAL 12.609333 1.064617 15293 +LOGNORMAL 13.059831 3.575570 LOGNORMAL 12.431590 1.736780 18760 diff --git a/tools/linsched/tests/mcarlo-sims/sim-464 b/tools/linsched/tests/mcarlo-sims/sim-464 new file mode 100644 index 00000000000000..afa3267b75dc0d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-464 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.516962 1.577355 EXPONENTIAL 690838 22305 +LOGNORMAL 13.005066 1.150287 EXPONENTIAL 668671 1824 +LOGNORMAL 12.164229 2.204433 EXPONENTIAL 639735 5148 +LOGNORMAL 12.626650 1.110322 LOGNORMAL 13.556409 3.560459 27359 +LOGNORMAL 13.046999 3.919026 EXPONENTIAL 661305 8285 diff --git a/tools/linsched/tests/mcarlo-sims/sim-465 b/tools/linsched/tests/mcarlo-sims/sim-465 new file mode 100644 index 00000000000000..3fa7f59beb9680 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-465 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.743917 3.016212 LOGNORMAL 13.617710 1.846834 9635 +LOGNORMAL 11.646392 1.916784 LOGNORMAL 11.499758 3.439022 7390 +LOGNORMAL 13.566868 2.347106 LOGNORMAL 11.156083 2.288544 177 diff --git a/tools/linsched/tests/mcarlo-sims/sim-466 b/tools/linsched/tests/mcarlo-sims/sim-466 new file mode 100644 index 00000000000000..ebf068af891897 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-466 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.905715 1.344286 EXPONENTIAL 609753 8807 +LOGNORMAL 11.411427 3.860650 EXPONENTIAL 675921 15539 +LOGNORMAL 11.905613 2.638787 EXPONENTIAL 626931 23349 +LOGNORMAL 12.446948 1.855971 EXPONENTIAL 679874 11353 diff --git a/tools/linsched/tests/mcarlo-sims/sim-467 b/tools/linsched/tests/mcarlo-sims/sim-467 new file mode 100644 index 00000000000000..5da74abdb102c3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-467 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.712050 1.418108 LOGNORMAL 12.944733 1.130167 10837 +LOGNORMAL 11.609948 1.393538 LOGNORMAL 12.689818 3.777629 30994 +LOGNORMAL 11.692641 2.215186 EXPONENTIAL 663332 11674 +LOGNORMAL 12.284686 1.725320 EXPONENTIAL 601900 337 +LOGNORMAL 11.951338 3.136305 EXPONENTIAL 674923 12688 diff --git a/tools/linsched/tests/mcarlo-sims/sim-468 b/tools/linsched/tests/mcarlo-sims/sim-468 new file mode 100644 index 00000000000000..16fa77aec539e4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-468 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.837318 1.808328 LOGNORMAL 13.012500 3.079779 8310 +LOGNORMAL 12.961908 1.796029 LOGNORMAL 13.965508 3.295053 21003 +LOGNORMAL 12.790900 1.648057 EXPONENTIAL 600556 28371 +LOGNORMAL 12.349428 3.838907 LOGNORMAL 12.881575 1.636065 434 +LOGNORMAL 13.901229 2.951948 EXPONENTIAL 649128 31657 diff --git a/tools/linsched/tests/mcarlo-sims/sim-469 b/tools/linsched/tests/mcarlo-sims/sim-469 new file mode 100644 index 00000000000000..efdd1d71e7a10e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-469 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 11.830163 3.551852 EXPONENTIAL 655746 20608 +LOGNORMAL 13.379617 2.224523 LOGNORMAL 12.898653 3.659212 14063 +LOGNORMAL 13.008885 2.330358 EXPONENTIAL 640838 13098 +LOGNORMAL 13.041830 1.037827 EXPONENTIAL 613867 20144 +LOGNORMAL 12.808584 1.864588 LOGNORMAL 12.842019 2.815244 18125 diff --git a/tools/linsched/tests/mcarlo-sims/sim-47 b/tools/linsched/tests/mcarlo-sims/sim-47 new file mode 100644 index 00000000000000..e7704bcf2ff49e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-47 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.565171 2.820663 LOGNORMAL 11.630466 1.243028 4347 +LOGNORMAL 13.848986 3.905915 EXPONENTIAL 689349 664 +LOGNORMAL 12.031299 3.036621 LOGNORMAL 13.098346 2.903375 3734 diff --git a/tools/linsched/tests/mcarlo-sims/sim-470 b/tools/linsched/tests/mcarlo-sims/sim-470 new file mode 100644 index 00000000000000..6bb8448cdfc340 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-470 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.744328 3.923695 EXPONENTIAL 604029 15251 +LOGNORMAL 11.139028 3.641251 LOGNORMAL 11.220220 3.245680 23626 diff --git a/tools/linsched/tests/mcarlo-sims/sim-471 b/tools/linsched/tests/mcarlo-sims/sim-471 new file mode 100644 index 00000000000000..c9b66c1cf832a8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-471 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.247827 1.229657 LOGNORMAL 13.678426 2.312087 13741 +LOGNORMAL 11.550973 3.205700 EXPONENTIAL 668294 12319 +LOGNORMAL 11.864488 1.445364 EXPONENTIAL 634106 27873 +LOGNORMAL 13.576699 2.582290 EXPONENTIAL 699993 29628 +LOGNORMAL 11.843296 2.269670 EXPONENTIAL 620415 32465 diff --git a/tools/linsched/tests/mcarlo-sims/sim-472 b/tools/linsched/tests/mcarlo-sims/sim-472 new file mode 100644 index 00000000000000..8c006d31b8aab0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-472 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.042038 1.526752 EXPONENTIAL 694309 8987 +LOGNORMAL 13.271019 1.014918 EXPONENTIAL 681601 364 +LOGNORMAL 12.826513 3.207080 EXPONENTIAL 696862 13073 diff --git a/tools/linsched/tests/mcarlo-sims/sim-473 b/tools/linsched/tests/mcarlo-sims/sim-473 new file mode 100644 index 00000000000000..4fa2b134384d6f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-473 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.891430 2.256799 EXPONENTIAL 670748 3528 +LOGNORMAL 12.157955 1.748420 EXPONENTIAL 667378 29394 +LOGNORMAL 11.008204 3.880027 LOGNORMAL 12.291873 2.514905 29586 +LOGNORMAL 11.789995 3.437884 EXPONENTIAL 678510 11058 +LOGNORMAL 12.636348 2.101795 EXPONENTIAL 685699 5428 diff --git a/tools/linsched/tests/mcarlo-sims/sim-474 b/tools/linsched/tests/mcarlo-sims/sim-474 new file mode 100644 index 00000000000000..9b99bcf6e9fc43 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-474 @@ -0,0 +1,6 @@ +ONE_GROUP 5 +LOGNORMAL 11.310127 2.310881 EXPONENTIAL 695853 21167 +LOGNORMAL 13.790591 3.456952 LOGNORMAL 13.735024 2.545951 13854 +LOGNORMAL 12.198065 3.877956 LOGNORMAL 13.377711 3.189159 4591 +LOGNORMAL 12.624787 2.788911 LOGNORMAL 13.108331 2.726520 8208 +LOGNORMAL 11.464524 2.262208 EXPONENTIAL 614643 13676 diff --git a/tools/linsched/tests/mcarlo-sims/sim-475 b/tools/linsched/tests/mcarlo-sims/sim-475 new file mode 100644 index 00000000000000..af32e72bd38b0f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-475 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.655619 3.991853 LOGNORMAL 11.542595 3.398861 7230 +LOGNORMAL 13.050600 1.434336 EXPONENTIAL 697528 24555 +LOGNORMAL 12.654883 1.617056 EXPONENTIAL 629181 23839 +LOGNORMAL 11.043340 3.419596 EXPONENTIAL 647236 22357 +LOGNORMAL 11.416598 3.769741 EXPONENTIAL 650604 12592 diff --git a/tools/linsched/tests/mcarlo-sims/sim-476 b/tools/linsched/tests/mcarlo-sims/sim-476 new file mode 100644 index 00000000000000..e5a65b72975088 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-476 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.362372 3.388298 LOGNORMAL 12.351640 2.011148 29455 +LOGNORMAL 11.979572 3.660859 LOGNORMAL 13.327862 2.382161 1107 +LOGNORMAL 13.919921 2.104805 LOGNORMAL 13.554193 2.325693 13374 +LOGNORMAL 12.056418 2.209175 LOGNORMAL 13.957387 1.800622 30216 diff --git a/tools/linsched/tests/mcarlo-sims/sim-477 b/tools/linsched/tests/mcarlo-sims/sim-477 new file mode 100644 index 00000000000000..190d81d21d48cf --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-477 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.623311 1.986544 EXPONENTIAL 663185 22598 +LOGNORMAL 12.653919 3.423656 LOGNORMAL 11.510487 3.748239 2113 +LOGNORMAL 13.713276 3.031184 LOGNORMAL 13.665920 2.119695 7463 diff --git a/tools/linsched/tests/mcarlo-sims/sim-478 b/tools/linsched/tests/mcarlo-sims/sim-478 new file mode 100644 index 00000000000000..1b9671ffa8ac99 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-478 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.703484 3.452781 EXPONENTIAL 625869 21466 +LOGNORMAL 11.625538 2.419724 EXPONENTIAL 634427 12735 +LOGNORMAL 13.194187 2.695617 EXPONENTIAL 643087 4367 +LOGNORMAL 11.934177 2.719203 LOGNORMAL 13.874692 3.949719 4457 diff --git a/tools/linsched/tests/mcarlo-sims/sim-479 b/tools/linsched/tests/mcarlo-sims/sim-479 new file mode 100644 index 00000000000000..bae4662c343cc3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-479 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.899469 2.367348 LOGNORMAL 11.143446 2.894681 31421 +LOGNORMAL 11.373436 1.335560 LOGNORMAL 11.718812 1.067673 13410 diff --git a/tools/linsched/tests/mcarlo-sims/sim-48 b/tools/linsched/tests/mcarlo-sims/sim-48 new file mode 100644 index 00000000000000..b58c2eb5bef550 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-48 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.478757 3.473361 LOGNORMAL 12.754267 3.967483 768 +LOGNORMAL 13.117867 3.987725 EXPONENTIAL 612510 4979 +LOGNORMAL 12.299094 3.868247 EXPONENTIAL 627610 6934 diff --git a/tools/linsched/tests/mcarlo-sims/sim-480 b/tools/linsched/tests/mcarlo-sims/sim-480 new file mode 100644 index 00000000000000..4bbe7fa56a3d59 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-480 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.574111 2.081498 LOGNORMAL 13.961033 3.080060 25462 +LOGNORMAL 13.609276 1.108063 EXPONENTIAL 674878 2061 +LOGNORMAL 12.772593 2.964422 EXPONENTIAL 665791 17749 diff --git a/tools/linsched/tests/mcarlo-sims/sim-481 b/tools/linsched/tests/mcarlo-sims/sim-481 new file mode 100644 index 00000000000000..462a7f76160dc6 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-481 @@ -0,0 +1,4 @@ +ROOT 3 +LOGNORMAL 13.241240 1.515027 LOGNORMAL 13.273125 3.419839 1679 +LOGNORMAL 11.604767 1.322793 LOGNORMAL 11.693750 2.855156 12680 +LOGNORMAL 13.639477 1.683922 EXPONENTIAL 672754 30242 diff --git a/tools/linsched/tests/mcarlo-sims/sim-482 b/tools/linsched/tests/mcarlo-sims/sim-482 new file mode 100644 index 00000000000000..b91c6dee727e90 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-482 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.917257 3.343114 EXPONENTIAL 620588 10648 +LOGNORMAL 12.460208 2.715107 LOGNORMAL 13.095145 3.109922 3018 +LOGNORMAL 13.906578 2.848802 LOGNORMAL 11.876769 3.857197 19097 diff --git a/tools/linsched/tests/mcarlo-sims/sim-483 b/tools/linsched/tests/mcarlo-sims/sim-483 new file mode 100644 index 00000000000000..7f26d653c46e37 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-483 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.488410 1.700926 EXPONENTIAL 657072 9233 +LOGNORMAL 13.702362 2.603143 EXPONENTIAL 606615 7187 diff --git a/tools/linsched/tests/mcarlo-sims/sim-484 b/tools/linsched/tests/mcarlo-sims/sim-484 new file mode 100644 index 00000000000000..eeeb1d1939be11 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-484 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.818592 2.071875 LOGNORMAL 12.328087 2.165694 32064 +LOGNORMAL 13.805845 1.843549 LOGNORMAL 12.215160 3.197644 7385 +LOGNORMAL 13.340432 3.645506 EXPONENTIAL 660051 2897 diff --git a/tools/linsched/tests/mcarlo-sims/sim-485 b/tools/linsched/tests/mcarlo-sims/sim-485 new file mode 100644 index 00000000000000..7d1a639e474f9b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-485 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.902684 2.416959 EXPONENTIAL 609755 27968 +LOGNORMAL 11.387785 2.499079 LOGNORMAL 12.574767 2.116522 17200 +LOGNORMAL 11.382233 2.183314 EXPONENTIAL 643191 16473 +LOGNORMAL 11.531106 2.301396 LOGNORMAL 13.124339 1.764177 27825 diff --git a/tools/linsched/tests/mcarlo-sims/sim-486 b/tools/linsched/tests/mcarlo-sims/sim-486 new file mode 100644 index 00000000000000..9c30528fc118cc --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-486 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 13.591028 3.406629 LOGNORMAL 11.996186 3.892699 32219 +LOGNORMAL 12.581325 1.334498 EXPONENTIAL 674472 23040 +LOGNORMAL 12.978042 2.956151 EXPONENTIAL 652351 1059 diff --git a/tools/linsched/tests/mcarlo-sims/sim-487 b/tools/linsched/tests/mcarlo-sims/sim-487 new file mode 100644 index 00000000000000..0efd1cd073eb82 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-487 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.794332 1.336757 LOGNORMAL 12.451736 1.326340 6284 +LOGNORMAL 12.545043 3.531448 LOGNORMAL 13.355446 3.986348 15803 +LOGNORMAL 13.958387 3.618590 EXPONENTIAL 667406 27778 diff --git a/tools/linsched/tests/mcarlo-sims/sim-488 b/tools/linsched/tests/mcarlo-sims/sim-488 new file mode 100644 index 00000000000000..c97c62328cead2 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-488 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.377076 1.512152 EXPONENTIAL 613957 25462 +LOGNORMAL 12.178899 2.748941 EXPONENTIAL 600829 8361 +LOGNORMAL 12.505171 2.417356 LOGNORMAL 12.096044 2.213156 25147 +LOGNORMAL 11.563773 2.327225 EXPONENTIAL 654401 10944 diff --git a/tools/linsched/tests/mcarlo-sims/sim-489 b/tools/linsched/tests/mcarlo-sims/sim-489 new file mode 100644 index 00000000000000..518db1ddc5ed83 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-489 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.570737 1.373763 LOGNORMAL 11.811624 3.966953 26678 +LOGNORMAL 11.457741 2.254071 LOGNORMAL 13.935881 3.357438 21474 +LOGNORMAL 12.557852 2.817116 EXPONENTIAL 652397 17734 diff --git a/tools/linsched/tests/mcarlo-sims/sim-49 b/tools/linsched/tests/mcarlo-sims/sim-49 new file mode 100644 index 00000000000000..ddd45f57d0f5f3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-49 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 12.735364 1.260311 LOGNORMAL 13.077920 1.601817 31460 +LOGNORMAL 11.206629 2.807109 EXPONENTIAL 668751 11147 +LOGNORMAL 11.516386 3.903822 EXPONENTIAL 629946 30146 +LOGNORMAL 12.720141 3.408803 LOGNORMAL 11.305292 2.050558 16867 diff --git a/tools/linsched/tests/mcarlo-sims/sim-490 b/tools/linsched/tests/mcarlo-sims/sim-490 new file mode 100644 index 00000000000000..b5e38807d421a7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-490 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.729068 3.446594 LOGNORMAL 13.016546 2.088399 273 +LOGNORMAL 11.152273 1.249184 EXPONENTIAL 662902 10282 +LOGNORMAL 12.219411 2.645626 LOGNORMAL 12.455398 2.868580 12931 +LOGNORMAL 12.853797 2.760581 EXPONENTIAL 683748 24411 diff --git a/tools/linsched/tests/mcarlo-sims/sim-491 b/tools/linsched/tests/mcarlo-sims/sim-491 new file mode 100644 index 00000000000000..e3db0436569275 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-491 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.416601 1.806001 LOGNORMAL 13.541248 3.761612 30418 +LOGNORMAL 12.365508 1.091491 EXPONENTIAL 642074 8637 +LOGNORMAL 12.989368 1.301700 LOGNORMAL 12.644815 3.405545 10178 +LOGNORMAL 12.679672 1.247108 EXPONENTIAL 607898 28608 diff --git a/tools/linsched/tests/mcarlo-sims/sim-492 b/tools/linsched/tests/mcarlo-sims/sim-492 new file mode 100644 index 00000000000000..78e745b152dcb4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-492 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.399795 3.350354 EXPONENTIAL 677171 15040 +LOGNORMAL 12.665749 1.247535 EXPONENTIAL 605994 16530 +LOGNORMAL 13.249322 2.349813 EXPONENTIAL 680970 1497 +LOGNORMAL 11.040702 1.077681 LOGNORMAL 12.655069 1.750226 13790 diff --git a/tools/linsched/tests/mcarlo-sims/sim-493 b/tools/linsched/tests/mcarlo-sims/sim-493 new file mode 100644 index 00000000000000..545231c846fe0a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-493 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 13.050471 2.267144 EXPONENTIAL 624017 5103 +LOGNORMAL 12.655215 1.204497 LOGNORMAL 11.819380 2.322583 25978 +LOGNORMAL 12.732879 1.499948 EXPONENTIAL 659109 1237 +LOGNORMAL 12.545083 1.209126 LOGNORMAL 11.847487 3.716996 22447 +LOGNORMAL 13.876476 3.933996 LOGNORMAL 11.562125 1.642939 23301 diff --git a/tools/linsched/tests/mcarlo-sims/sim-494 b/tools/linsched/tests/mcarlo-sims/sim-494 new file mode 100644 index 00000000000000..15e0e311ead774 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-494 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.454524 1.176888 EXPONENTIAL 658843 19486 +LOGNORMAL 12.878991 3.205304 EXPONENTIAL 616598 30562 +LOGNORMAL 13.533337 2.802125 LOGNORMAL 12.375531 1.556883 5633 +LOGNORMAL 11.962083 3.733399 LOGNORMAL 13.912298 2.997439 13531 diff --git a/tools/linsched/tests/mcarlo-sims/sim-495 b/tools/linsched/tests/mcarlo-sims/sim-495 new file mode 100644 index 00000000000000..f000619428e813 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-495 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.148818 1.184795 EXPONENTIAL 637564 6078 +LOGNORMAL 13.621442 1.583386 EXPONENTIAL 655345 28360 +LOGNORMAL 11.656425 2.540636 LOGNORMAL 11.197249 1.166220 19024 +LOGNORMAL 13.752624 1.350659 EXPONENTIAL 658159 28800 +LOGNORMAL 13.464774 2.463200 EXPONENTIAL 644159 12275 diff --git a/tools/linsched/tests/mcarlo-sims/sim-496 b/tools/linsched/tests/mcarlo-sims/sim-496 new file mode 100644 index 00000000000000..5e403009c6900f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-496 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 13.056362 2.270770 LOGNORMAL 11.817986 2.888086 16992 +LOGNORMAL 11.023527 3.421468 LOGNORMAL 11.694650 2.977392 21678 +LOGNORMAL 13.641445 1.773710 EXPONENTIAL 676883 17936 +LOGNORMAL 11.074739 3.138675 EXPONENTIAL 689171 30508 +LOGNORMAL 11.935742 2.020641 LOGNORMAL 12.362015 2.388227 14314 diff --git a/tools/linsched/tests/mcarlo-sims/sim-497 b/tools/linsched/tests/mcarlo-sims/sim-497 new file mode 100644 index 00000000000000..cae3b258766469 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-497 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.761200 2.480997 EXPONENTIAL 687090 12138 +LOGNORMAL 13.333012 1.928664 LOGNORMAL 11.702987 2.107892 4628 +LOGNORMAL 11.784955 2.732683 EXPONENTIAL 630102 32551 diff --git a/tools/linsched/tests/mcarlo-sims/sim-498 b/tools/linsched/tests/mcarlo-sims/sim-498 new file mode 100644 index 00000000000000..70a850fde2e695 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-498 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 12.609204 1.895922 EXPONENTIAL 615699 13212 +LOGNORMAL 11.510192 1.796566 LOGNORMAL 11.184619 1.883412 32285 +LOGNORMAL 11.846730 2.983735 EXPONENTIAL 648076 31938 +LOGNORMAL 13.799410 1.676967 EXPONENTIAL 655881 16626 diff --git a/tools/linsched/tests/mcarlo-sims/sim-499 b/tools/linsched/tests/mcarlo-sims/sim-499 new file mode 100644 index 00000000000000..0001fb2dc4f8ee --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-499 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.429079 3.526737 LOGNORMAL 13.436313 1.118548 13275 +LOGNORMAL 11.844759 2.867135 EXPONENTIAL 655300 3025 +LOGNORMAL 12.621511 1.727844 EXPONENTIAL 695778 31602 +LOGNORMAL 11.968190 1.367388 LOGNORMAL 13.072571 1.692448 12519 diff --git a/tools/linsched/tests/mcarlo-sims/sim-5 b/tools/linsched/tests/mcarlo-sims/sim-5 new file mode 100644 index 00000000000000..dd268facfb8e2e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-5 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.418817 3.063729 EXPONENTIAL 680195 27188 +LOGNORMAL 12.043162 1.430596 LOGNORMAL 11.359242 2.781463 20510 diff --git a/tools/linsched/tests/mcarlo-sims/sim-50 b/tools/linsched/tests/mcarlo-sims/sim-50 new file mode 100644 index 00000000000000..370803d41cf308 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-50 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.095167 2.479546 LOGNORMAL 13.607001 1.864705 29463 +LOGNORMAL 12.536757 2.268501 LOGNORMAL 12.619851 3.839266 3654 +LOGNORMAL 12.432862 2.114672 LOGNORMAL 11.880831 3.125450 24663 +LOGNORMAL 12.199336 1.247466 LOGNORMAL 11.570542 2.101934 14074 +LOGNORMAL 13.476913 2.474365 EXPONENTIAL 642326 10547 diff --git a/tools/linsched/tests/mcarlo-sims/sim-500 b/tools/linsched/tests/mcarlo-sims/sim-500 new file mode 100644 index 00000000000000..b13b08ba545d44 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-500 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.352617 3.428984 EXPONENTIAL 673376 10147 +LOGNORMAL 11.352517 3.758368 EXPONENTIAL 679765 6540 +LOGNORMAL 13.151894 2.885516 LOGNORMAL 11.824819 3.739522 21128 +LOGNORMAL 11.034296 1.418670 LOGNORMAL 12.380727 1.874816 7081 +LOGNORMAL 11.159276 1.946829 LOGNORMAL 13.647619 3.535025 9058 diff --git a/tools/linsched/tests/mcarlo-sims/sim-51 b/tools/linsched/tests/mcarlo-sims/sim-51 new file mode 100644 index 00000000000000..b581b9c485a6bd --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-51 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.675936 3.454833 LOGNORMAL 11.870162 3.819401 1821 +LOGNORMAL 12.593411 3.460594 LOGNORMAL 11.823750 3.771619 19722 diff --git a/tools/linsched/tests/mcarlo-sims/sim-52 b/tools/linsched/tests/mcarlo-sims/sim-52 new file mode 100644 index 00000000000000..04aee54b352bdb --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-52 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.124320 1.453784 EXPONENTIAL 635673 12636 +LOGNORMAL 12.436361 3.919483 LOGNORMAL 13.371661 3.514573 26871 diff --git a/tools/linsched/tests/mcarlo-sims/sim-53 b/tools/linsched/tests/mcarlo-sims/sim-53 new file mode 100644 index 00000000000000..ed5ccf652d13db --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-53 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.945154 1.204132 EXPONENTIAL 624812 17428 +LOGNORMAL 13.339382 3.998186 EXPONENTIAL 694619 15972 +LOGNORMAL 11.801482 1.506517 LOGNORMAL 13.585679 3.500970 28121 +LOGNORMAL 11.316398 2.705496 EXPONENTIAL 625388 6690 diff --git a/tools/linsched/tests/mcarlo-sims/sim-54 b/tools/linsched/tests/mcarlo-sims/sim-54 new file mode 100644 index 00000000000000..57ce0c020da9a7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-54 @@ -0,0 +1,3 @@ +ONE_GROUP 2 +LOGNORMAL 12.315489 3.416590 LOGNORMAL 11.716065 2.907676 23387 +LOGNORMAL 13.759101 2.212177 LOGNORMAL 11.875393 1.737179 87 diff --git a/tools/linsched/tests/mcarlo-sims/sim-55 b/tools/linsched/tests/mcarlo-sims/sim-55 new file mode 100644 index 00000000000000..4d4ecdb997b304 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-55 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.944029 2.300156 EXPONENTIAL 622377 9804 +LOGNORMAL 11.926887 3.195170 LOGNORMAL 11.917689 1.604803 8637 diff --git a/tools/linsched/tests/mcarlo-sims/sim-56 b/tools/linsched/tests/mcarlo-sims/sim-56 new file mode 100644 index 00000000000000..dd5a4cc5c6a500 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-56 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.108998 1.925068 EXPONENTIAL 647609 29140 +LOGNORMAL 13.201488 2.410817 LOGNORMAL 13.244623 1.373725 20790 +LOGNORMAL 13.617624 3.412942 EXPONENTIAL 692413 19101 +LOGNORMAL 11.083253 2.235432 EXPONENTIAL 639519 20694 diff --git a/tools/linsched/tests/mcarlo-sims/sim-57 b/tools/linsched/tests/mcarlo-sims/sim-57 new file mode 100644 index 00000000000000..6a48863e985254 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-57 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.744092 3.959655 LOGNORMAL 13.092519 3.966546 4571 +LOGNORMAL 11.466945 3.938565 EXPONENTIAL 636283 30496 +LOGNORMAL 12.773644 2.642148 LOGNORMAL 12.938100 3.646503 11390 +LOGNORMAL 13.732689 2.309779 LOGNORMAL 11.472693 1.547792 21784 diff --git a/tools/linsched/tests/mcarlo-sims/sim-58 b/tools/linsched/tests/mcarlo-sims/sim-58 new file mode 100644 index 00000000000000..525e90b7e20aad --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-58 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.218180 1.951508 EXPONENTIAL 635301 17496 +LOGNORMAL 13.712044 3.317117 EXPONENTIAL 685207 7838 +LOGNORMAL 12.625561 3.810025 EXPONENTIAL 640349 29051 +LOGNORMAL 11.859367 2.383610 LOGNORMAL 12.326676 2.449447 25000 diff --git a/tools/linsched/tests/mcarlo-sims/sim-59 b/tools/linsched/tests/mcarlo-sims/sim-59 new file mode 100644 index 00000000000000..fe8a23399c320d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-59 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.030300 1.254342 LOGNORMAL 13.985533 3.854586 17032 +LOGNORMAL 11.475983 2.853910 LOGNORMAL 11.035075 2.509399 3668 +LOGNORMAL 11.489169 2.457195 EXPONENTIAL 647790 18907 +LOGNORMAL 12.080768 3.463242 LOGNORMAL 11.439876 2.001433 5622 diff --git a/tools/linsched/tests/mcarlo-sims/sim-6 b/tools/linsched/tests/mcarlo-sims/sim-6 new file mode 100644 index 00000000000000..4dd9c8ecfbfd16 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-6 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 12.965564 3.230148 EXPONENTIAL 684831 25466 +LOGNORMAL 12.205268 1.933465 LOGNORMAL 11.282191 3.780520 6204 +LOGNORMAL 12.413508 3.827130 LOGNORMAL 11.555679 1.296389 11753 diff --git a/tools/linsched/tests/mcarlo-sims/sim-60 b/tools/linsched/tests/mcarlo-sims/sim-60 new file mode 100644 index 00000000000000..7dc60bf2f20a38 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-60 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.459053 1.302135 EXPONENTIAL 675060 14581 +LOGNORMAL 12.839677 2.459047 LOGNORMAL 11.708340 2.076804 1247 diff --git a/tools/linsched/tests/mcarlo-sims/sim-61 b/tools/linsched/tests/mcarlo-sims/sim-61 new file mode 100644 index 00000000000000..8a0bad5a458755 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-61 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 13.412877 3.229655 EXPONENTIAL 658623 18735 +LOGNORMAL 12.696906 2.895525 LOGNORMAL 13.565010 1.124870 22776 +LOGNORMAL 12.221895 2.389836 LOGNORMAL 13.460159 2.900531 17972 +LOGNORMAL 11.315286 2.009458 EXPONENTIAL 682258 7038 +LOGNORMAL 12.080183 2.634512 EXPONENTIAL 688471 2339 diff --git a/tools/linsched/tests/mcarlo-sims/sim-62 b/tools/linsched/tests/mcarlo-sims/sim-62 new file mode 100644 index 00000000000000..8f8eb9a3995a82 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-62 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.538787 3.393835 EXPONENTIAL 677494 1609 +LOGNORMAL 11.141028 1.259107 LOGNORMAL 13.428407 3.229615 32055 diff --git a/tools/linsched/tests/mcarlo-sims/sim-63 b/tools/linsched/tests/mcarlo-sims/sim-63 new file mode 100644 index 00000000000000..90b2a01b7ab1a4 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-63 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.177164 1.591255 EXPONENTIAL 674318 10876 +LOGNORMAL 12.427354 2.544040 LOGNORMAL 11.049570 3.118666 25847 +LOGNORMAL 13.662909 2.505125 LOGNORMAL 13.991487 1.927451 28498 diff --git a/tools/linsched/tests/mcarlo-sims/sim-64 b/tools/linsched/tests/mcarlo-sims/sim-64 new file mode 100644 index 00000000000000..b5131e148a3a22 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-64 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.901277 2.768332 LOGNORMAL 13.891209 2.542506 18211 +LOGNORMAL 12.832950 3.389651 LOGNORMAL 11.359238 2.721356 28273 diff --git a/tools/linsched/tests/mcarlo-sims/sim-65 b/tools/linsched/tests/mcarlo-sims/sim-65 new file mode 100644 index 00000000000000..f763fbf317ab3d --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-65 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.386398 1.194288 EXPONENTIAL 625129 13755 +LOGNORMAL 12.823971 2.474869 LOGNORMAL 12.357961 3.246315 14167 +LOGNORMAL 12.096266 2.938985 EXPONENTIAL 681069 2710 diff --git a/tools/linsched/tests/mcarlo-sims/sim-66 b/tools/linsched/tests/mcarlo-sims/sim-66 new file mode 100644 index 00000000000000..418dbd66624170 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-66 @@ -0,0 +1,5 @@ +ONE_GROUP 4 +LOGNORMAL 12.732152 1.274494 LOGNORMAL 12.445594 3.092624 19050 +LOGNORMAL 11.502348 1.970321 EXPONENTIAL 672417 11154 +LOGNORMAL 13.089469 3.709987 LOGNORMAL 12.839808 1.652888 15558 +LOGNORMAL 13.919784 2.806129 EXPONENTIAL 616725 13928 diff --git a/tools/linsched/tests/mcarlo-sims/sim-67 b/tools/linsched/tests/mcarlo-sims/sim-67 new file mode 100644 index 00000000000000..88ddb7ac7bf77e --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-67 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.959585 2.742040 EXPONENTIAL 664163 27335 +LOGNORMAL 13.278347 1.183641 EXPONENTIAL 664043 27892 +LOGNORMAL 11.540105 3.549652 EXPONENTIAL 698638 13882 +LOGNORMAL 12.164128 3.502527 LOGNORMAL 13.439424 2.399665 20044 diff --git a/tools/linsched/tests/mcarlo-sims/sim-68 b/tools/linsched/tests/mcarlo-sims/sim-68 new file mode 100644 index 00000000000000..e63deb68a7767c --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-68 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.301823 1.744193 LOGNORMAL 11.115327 1.304593 3491 +LOGNORMAL 11.553726 1.477973 EXPONENTIAL 637336 27870 +LOGNORMAL 13.556359 2.727279 EXPONENTIAL 634794 15204 +LOGNORMAL 13.903056 3.656516 EXPONENTIAL 621288 26267 diff --git a/tools/linsched/tests/mcarlo-sims/sim-69 b/tools/linsched/tests/mcarlo-sims/sim-69 new file mode 100644 index 00000000000000..e0fdced29ec359 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-69 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 13.865035 3.650739 LOGNORMAL 11.587099 1.372515 27949 +LOGNORMAL 13.293304 3.564892 LOGNORMAL 11.296583 2.667477 25638 +LOGNORMAL 13.136769 3.679729 EXPONENTIAL 632776 6107 +LOGNORMAL 13.594492 1.626482 EXPONENTIAL 620972 30157 diff --git a/tools/linsched/tests/mcarlo-sims/sim-7 b/tools/linsched/tests/mcarlo-sims/sim-7 new file mode 100644 index 00000000000000..bcc48d298fec96 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-7 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.941232 2.289316 EXPONENTIAL 649875 9570 +LOGNORMAL 13.847439 1.914401 LOGNORMAL 13.336777 2.204132 8040 diff --git a/tools/linsched/tests/mcarlo-sims/sim-70 b/tools/linsched/tests/mcarlo-sims/sim-70 new file mode 100644 index 00000000000000..98ba931f82d36a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-70 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.103959 2.241264 LOGNORMAL 13.278792 2.655209 26553 +LOGNORMAL 11.718647 1.304980 EXPONENTIAL 673637 17048 diff --git a/tools/linsched/tests/mcarlo-sims/sim-71 b/tools/linsched/tests/mcarlo-sims/sim-71 new file mode 100644 index 00000000000000..0adf6a953d13e5 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-71 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.120561 3.262246 LOGNORMAL 11.752889 3.802470 23695 +LOGNORMAL 12.097397 3.955184 EXPONENTIAL 639610 31706 +LOGNORMAL 13.795413 3.512725 EXPONENTIAL 640167 25884 +LOGNORMAL 11.550290 3.728901 LOGNORMAL 11.287029 1.088389 18779 diff --git a/tools/linsched/tests/mcarlo-sims/sim-72 b/tools/linsched/tests/mcarlo-sims/sim-72 new file mode 100644 index 00000000000000..4315d6a518b361 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-72 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.055139 3.728813 LOGNORMAL 12.672838 3.390436 11609 +LOGNORMAL 12.972205 3.842219 LOGNORMAL 11.632599 1.088652 26877 diff --git a/tools/linsched/tests/mcarlo-sims/sim-73 b/tools/linsched/tests/mcarlo-sims/sim-73 new file mode 100644 index 00000000000000..48aaf701d6e826 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-73 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 12.598540 2.663598 LOGNORMAL 12.109072 2.171214 3690 +LOGNORMAL 13.386812 3.148338 LOGNORMAL 12.608253 3.915713 7628 +LOGNORMAL 12.123516 1.927650 EXPONENTIAL 600787 28616 +LOGNORMAL 13.659936 3.544237 EXPONENTIAL 638655 31699 +LOGNORMAL 13.002860 3.065529 LOGNORMAL 12.733443 1.969894 8252 diff --git a/tools/linsched/tests/mcarlo-sims/sim-74 b/tools/linsched/tests/mcarlo-sims/sim-74 new file mode 100644 index 00000000000000..e0cfafba337569 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-74 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.360562 1.960117 EXPONENTIAL 624861 1508 +LOGNORMAL 11.970057 2.741980 LOGNORMAL 11.743006 2.696494 30490 +LOGNORMAL 11.116394 1.239251 EXPONENTIAL 670167 6634 diff --git a/tools/linsched/tests/mcarlo-sims/sim-75 b/tools/linsched/tests/mcarlo-sims/sim-75 new file mode 100644 index 00000000000000..1645822691ffe9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-75 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.131180 2.747402 EXPONENTIAL 657063 19855 +LOGNORMAL 13.911291 1.065316 EXPONENTIAL 612696 5943 +LOGNORMAL 12.443187 1.636173 EXPONENTIAL 618126 21883 diff --git a/tools/linsched/tests/mcarlo-sims/sim-76 b/tools/linsched/tests/mcarlo-sims/sim-76 new file mode 100644 index 00000000000000..b8b377476c0ee8 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-76 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.414822 1.919022 EXPONENTIAL 637832 2758 +LOGNORMAL 13.088547 3.216453 EXPONENTIAL 695053 2455 diff --git a/tools/linsched/tests/mcarlo-sims/sim-77 b/tools/linsched/tests/mcarlo-sims/sim-77 new file mode 100644 index 00000000000000..6a9481946c05aa --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-77 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.220257 1.854853 EXPONENTIAL 639938 28898 +LOGNORMAL 13.461841 1.157121 LOGNORMAL 12.125167 2.683195 24498 +LOGNORMAL 11.516359 3.443702 LOGNORMAL 12.178237 3.628578 28586 diff --git a/tools/linsched/tests/mcarlo-sims/sim-78 b/tools/linsched/tests/mcarlo-sims/sim-78 new file mode 100644 index 00000000000000..e0b62dc7f936bf --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-78 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 11.989532 3.059290 LOGNORMAL 12.653692 2.601891 1790 +LOGNORMAL 13.417487 2.712213 LOGNORMAL 12.069693 3.329352 18716 +LOGNORMAL 12.148011 2.619106 LOGNORMAL 13.278705 1.195701 32049 diff --git a/tools/linsched/tests/mcarlo-sims/sim-79 b/tools/linsched/tests/mcarlo-sims/sim-79 new file mode 100644 index 00000000000000..87a216b584abc7 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-79 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.550736 1.220278 EXPONENTIAL 687331 1575 +LOGNORMAL 12.186475 1.084126 EXPONENTIAL 616596 14782 +LOGNORMAL 13.670716 1.730375 LOGNORMAL 12.343686 3.333294 17213 diff --git a/tools/linsched/tests/mcarlo-sims/sim-8 b/tools/linsched/tests/mcarlo-sims/sim-8 new file mode 100644 index 00000000000000..16fa622a976d4f --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-8 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.033449 3.170757 LOGNORMAL 11.575935 2.744156 29899 +LOGNORMAL 13.172370 2.026242 LOGNORMAL 11.961350 3.410553 28460 diff --git a/tools/linsched/tests/mcarlo-sims/sim-80 b/tools/linsched/tests/mcarlo-sims/sim-80 new file mode 100644 index 00000000000000..071e3477a1abee --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-80 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.756935 2.810105 EXPONENTIAL 639526 21396 +LOGNORMAL 11.664851 3.143769 EXPONENTIAL 695288 25316 +LOGNORMAL 12.563522 2.121820 EXPONENTIAL 691893 8370 +LOGNORMAL 13.644588 3.595433 LOGNORMAL 13.565531 3.876637 10679 +LOGNORMAL 11.426084 1.201922 EXPONENTIAL 664033 1469 diff --git a/tools/linsched/tests/mcarlo-sims/sim-81 b/tools/linsched/tests/mcarlo-sims/sim-81 new file mode 100644 index 00000000000000..b3bdc3a76e7cce --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-81 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.336960 1.285405 LOGNORMAL 11.993720 1.443645 13700 +LOGNORMAL 12.333858 3.151502 LOGNORMAL 11.977851 1.746197 2091 +LOGNORMAL 11.900332 3.887549 EXPONENTIAL 658298 6394 +LOGNORMAL 12.638433 1.147345 EXPONENTIAL 612741 31511 +LOGNORMAL 13.039746 2.006365 EXPONENTIAL 648120 15667 diff --git a/tools/linsched/tests/mcarlo-sims/sim-82 b/tools/linsched/tests/mcarlo-sims/sim-82 new file mode 100644 index 00000000000000..955b5a1338b74b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-82 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.031972 2.347376 LOGNORMAL 12.588801 3.978106 348 +LOGNORMAL 12.466417 2.067814 EXPONENTIAL 646769 2097 +LOGNORMAL 13.027900 3.918464 EXPONENTIAL 665833 873 +LOGNORMAL 13.739067 1.493667 EXPONENTIAL 669559 590 +LOGNORMAL 11.710300 2.009610 EXPONENTIAL 648594 30397 diff --git a/tools/linsched/tests/mcarlo-sims/sim-83 b/tools/linsched/tests/mcarlo-sims/sim-83 new file mode 100644 index 00000000000000..5adddd070e5e8b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-83 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 12.956420 2.550231 LOGNORMAL 12.732311 3.958884 28490 +LOGNORMAL 12.584186 1.414592 EXPONENTIAL 638171 10093 +LOGNORMAL 11.987012 2.710235 EXPONENTIAL 659399 9776 +LOGNORMAL 11.964557 3.314100 LOGNORMAL 12.456479 3.036173 15857 diff --git a/tools/linsched/tests/mcarlo-sims/sim-84 b/tools/linsched/tests/mcarlo-sims/sim-84 new file mode 100644 index 00000000000000..4f26e401cf0ad3 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-84 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 12.093496 1.390620 EXPONENTIAL 683747 26103 +LOGNORMAL 13.245183 1.795985 LOGNORMAL 13.061820 1.008880 2820 +LOGNORMAL 11.358611 1.175457 LOGNORMAL 13.458465 1.422345 31368 diff --git a/tools/linsched/tests/mcarlo-sims/sim-85 b/tools/linsched/tests/mcarlo-sims/sim-85 new file mode 100644 index 00000000000000..241006581fccce --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-85 @@ -0,0 +1,6 @@ +ROOT 5 +LOGNORMAL 11.985411 2.804915 LOGNORMAL 11.493791 2.141369 10741 +LOGNORMAL 12.918638 3.545693 LOGNORMAL 13.182660 3.960131 15049 +LOGNORMAL 12.534702 3.728409 LOGNORMAL 12.748791 1.930061 969 +LOGNORMAL 12.646373 2.586018 EXPONENTIAL 676043 7266 +LOGNORMAL 13.371622 2.858004 LOGNORMAL 13.854510 3.757028 2754 diff --git a/tools/linsched/tests/mcarlo-sims/sim-86 b/tools/linsched/tests/mcarlo-sims/sim-86 new file mode 100644 index 00000000000000..9ab12bfcf82a69 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-86 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.767159 2.641783 LOGNORMAL 12.752367 2.027772 5927 +LOGNORMAL 13.630785 2.608818 EXPONENTIAL 603003 23264 +LOGNORMAL 13.733165 1.306035 EXPONENTIAL 697524 17340 diff --git a/tools/linsched/tests/mcarlo-sims/sim-87 b/tools/linsched/tests/mcarlo-sims/sim-87 new file mode 100644 index 00000000000000..b2bce565b4f4f9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-87 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.787596 3.129382 LOGNORMAL 11.217456 1.786207 23052 +LOGNORMAL 11.096780 1.583914 EXPONENTIAL 625203 30098 diff --git a/tools/linsched/tests/mcarlo-sims/sim-88 b/tools/linsched/tests/mcarlo-sims/sim-88 new file mode 100644 index 00000000000000..67f57fcba1fb14 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-88 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 12.216593 3.274248 EXPONENTIAL 634969 22537 +LOGNORMAL 11.680514 2.391713 LOGNORMAL 12.810007 1.784892 28526 diff --git a/tools/linsched/tests/mcarlo-sims/sim-89 b/tools/linsched/tests/mcarlo-sims/sim-89 new file mode 100644 index 00000000000000..1c96926b3b65a0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-89 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.063882 3.659848 EXPONENTIAL 687564 14701 +LOGNORMAL 12.050684 1.853946 EXPONENTIAL 625318 29221 +LOGNORMAL 11.891471 1.952501 EXPONENTIAL 664587 12193 +LOGNORMAL 11.847601 2.626833 EXPONENTIAL 608242 18231 +LOGNORMAL 11.361275 3.952510 LOGNORMAL 13.147558 2.010850 1866 diff --git a/tools/linsched/tests/mcarlo-sims/sim-9 b/tools/linsched/tests/mcarlo-sims/sim-9 new file mode 100644 index 00000000000000..204b8abbe1d816 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-9 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.926980 1.761179 EXPONENTIAL 666759 21058 +LOGNORMAL 13.832910 3.718251 LOGNORMAL 12.182868 3.459144 5916 +LOGNORMAL 11.428848 2.655759 LOGNORMAL 13.469712 1.451445 23267 +LOGNORMAL 12.856364 3.911096 LOGNORMAL 13.748489 3.859990 16511 +LOGNORMAL 13.268504 3.740244 LOGNORMAL 12.474731 3.807715 29715 diff --git a/tools/linsched/tests/mcarlo-sims/sim-90 b/tools/linsched/tests/mcarlo-sims/sim-90 new file mode 100644 index 00000000000000..4adf61ff818619 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-90 @@ -0,0 +1,4 @@ +ONE_GROUP 3 +LOGNORMAL 12.700867 3.466590 EXPONENTIAL 653838 10136 +LOGNORMAL 12.711150 2.298322 LOGNORMAL 13.923301 1.919362 6529 +LOGNORMAL 13.190324 3.767737 EXPONENTIAL 649697 3992 diff --git a/tools/linsched/tests/mcarlo-sims/sim-91 b/tools/linsched/tests/mcarlo-sims/sim-91 new file mode 100644 index 00000000000000..fedca690b5eece --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-91 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 11.851806 1.309795 LOGNORMAL 12.123306 1.404704 30626 +LOGNORMAL 13.935423 1.651947 EXPONENTIAL 696489 24645 +LOGNORMAL 12.215599 1.576963 LOGNORMAL 13.173956 1.684609 5812 +LOGNORMAL 12.537289 2.216906 EXPONENTIAL 685312 16569 +LOGNORMAL 11.495630 3.059456 LOGNORMAL 13.822631 1.955524 23900 diff --git a/tools/linsched/tests/mcarlo-sims/sim-92 b/tools/linsched/tests/mcarlo-sims/sim-92 new file mode 100644 index 00000000000000..e8828f41bdaaf9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-92 @@ -0,0 +1,6 @@ +5 +LOGNORMAL 12.844466 1.936342 LOGNORMAL 12.880553 2.458609 31464 +LOGNORMAL 12.645631 2.121429 EXPONENTIAL 685122 28730 +LOGNORMAL 12.687944 2.283176 EXPONENTIAL 688359 12105 +LOGNORMAL 13.779658 2.705205 EXPONENTIAL 615671 8012 +LOGNORMAL 11.956488 2.689781 LOGNORMAL 11.194198 3.889210 387 diff --git a/tools/linsched/tests/mcarlo-sims/sim-93 b/tools/linsched/tests/mcarlo-sims/sim-93 new file mode 100644 index 00000000000000..fbe1ab4f7e0213 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-93 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 11.366007 2.482400 LOGNORMAL 13.206902 3.402949 17547 +LOGNORMAL 13.804594 1.812232 EXPONENTIAL 688034 9474 +LOGNORMAL 11.011710 2.815311 LOGNORMAL 12.189858 3.936813 29988 diff --git a/tools/linsched/tests/mcarlo-sims/sim-94 b/tools/linsched/tests/mcarlo-sims/sim-94 new file mode 100644 index 00000000000000..25b86127636bb0 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-94 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.879748 2.918083 EXPONENTIAL 629174 21360 +LOGNORMAL 12.475792 3.636787 EXPONENTIAL 663607 4814 diff --git a/tools/linsched/tests/mcarlo-sims/sim-95 b/tools/linsched/tests/mcarlo-sims/sim-95 new file mode 100644 index 00000000000000..baa740cae8ec7a --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-95 @@ -0,0 +1,5 @@ +4 +LOGNORMAL 11.152850 1.956293 LOGNORMAL 12.237697 3.967166 22552 +LOGNORMAL 12.933146 1.378340 EXPONENTIAL 659407 15835 +LOGNORMAL 11.006543 2.967383 EXPONENTIAL 651615 5363 +LOGNORMAL 13.535897 3.813503 EXPONENTIAL 627410 32438 diff --git a/tools/linsched/tests/mcarlo-sims/sim-96 b/tools/linsched/tests/mcarlo-sims/sim-96 new file mode 100644 index 00000000000000..cc619a8026236b --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-96 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 11.191132 3.355128 EXPONENTIAL 670197 17406 +LOGNORMAL 13.439986 2.852987 LOGNORMAL 13.382601 1.382307 30734 diff --git a/tools/linsched/tests/mcarlo-sims/sim-97 b/tools/linsched/tests/mcarlo-sims/sim-97 new file mode 100644 index 00000000000000..63980169101baa --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-97 @@ -0,0 +1,5 @@ +ROOT 4 +LOGNORMAL 12.463876 1.367229 EXPONENTIAL 658514 19167 +LOGNORMAL 12.898280 3.399189 LOGNORMAL 11.386749 3.084602 7995 +LOGNORMAL 12.852148 2.050492 EXPONENTIAL 690876 1456 +LOGNORMAL 12.852690 2.154516 LOGNORMAL 11.823546 3.329675 6852 diff --git a/tools/linsched/tests/mcarlo-sims/sim-98 b/tools/linsched/tests/mcarlo-sims/sim-98 new file mode 100644 index 00000000000000..5c9aefb832abc9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-98 @@ -0,0 +1,3 @@ +2 +LOGNORMAL 13.430145 2.451243 LOGNORMAL 12.700928 1.492439 3140 +LOGNORMAL 11.639747 1.219648 EXPONENTIAL 628429 310 diff --git a/tools/linsched/tests/mcarlo-sims/sim-99 b/tools/linsched/tests/mcarlo-sims/sim-99 new file mode 100644 index 00000000000000..f2991b615f57b9 --- /dev/null +++ b/tools/linsched/tests/mcarlo-sims/sim-99 @@ -0,0 +1,4 @@ +3 +LOGNORMAL 13.714238 1.192887 EXPONENTIAL 603027 11600 +LOGNORMAL 11.979736 3.417494 EXPONENTIAL 698205 2101 +LOGNORMAL 11.083617 2.351645 LOGNORMAL 11.679245 2.074022 29336 diff --git a/tools/linsched/tests/perf_replay.c b/tools/linsched/tests/perf_replay.c new file mode 100644 index 00000000000000..c092d4b60141e8 --- /dev/null +++ b/tools/linsched/tests/perf_replay.c @@ -0,0 +1,49 @@ +/* Copyright 2011 Google Inc. All Rights Reserved. + * Author: asr@google.com (Abhishek Srivastava) + * + * Simple demo program for replaying perf traces + * processed into .rlog(s) + */ + +#include "linsched.h" +#include <strings.h> +#include <stdio.h> + +void usage(void) +{ + fprintf(stdout, "\nUsage: perf_replay \ + <PATH_TO_DIRECTORY_WITH_RLOGS> <SIM_DURATION>\n"); +} + +int linsched_test_main(int argc, char **argv) +{ + int perf_error = 0, duration; + + /* Initialize linsched. */ + linsched_init(NULL); + + if (argc == 3) + perf_error = linsched_create_perf_tasks(argv[1]); + else { + fprintf(stderr, "\ninvalid number of arguments.Exiting ...\n"); + usage(); + return -1; + } + + if (perf_error) { + fprintf(stderr, "\nfailed to create perf tasks.Exiting ...\n"); + return -1; + } + + /* Run simulation */ + duration = simple_strtol(argv[2], NULL, 0); + linsched_run_sim(duration); + + linsched_show_schedstat(); + + /* we always want these */ + linsched_global_options.print_tasks = 1; + linsched_global_options.print_cgroups = 1; + + return 0; +} diff --git a/tools/linsched/tests/run_tests.sh b/tools/linsched/tests/run_tests.sh new file mode 100755 index 00000000000000..018688fa8c38fe --- /dev/null +++ b/tools/linsched/tests/run_tests.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +#runs all tests given to it, stopping on the first unexpected failure +#knows to run subtests for basic_tests + +function die() { + echo $1 + exit 1 +} + +for i in "$@"; do + if [ "$i" = "basic_tests" ]; then + for a in $(./basic_tests list); do + echo "Running test $a" + for topo in "uniprocessor" "dual_cpu" "dual_cpu_mc" "quad_cpu" "quad_cpu_mc" "quad_cpu_dual_socket" "quad_cpu_quad_socket" "hex_cpu_dual_socket_smt"; do + echo -ne "Testing topology $topo ....." + ./basic_tests $a $topo + if [ $? -eq 0 ]; then + echo "PASSED" + else + echo "'basic_tests $a $topo' FAILED" + fi + done + done + else + ./$i || die "$i failed" + fi +done diff --git a/tools/linsched/tests/run_unit_tests.sh b/tools/linsched/tests/run_unit_tests.sh new file mode 100755 index 00000000000000..db2ba140ed476e --- /dev/null +++ b/tools/linsched/tests/run_unit_tests.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# +# Copyright 2011 Google Inc. All Rights Reserved. +# Author: asr@google.com (Abhishek Srivastava) + +function die() +{ + echo $1 exit 1 +} + +seed_list=(100 1000 5000 10000) +n_list=(1000 10000 100000 1000000) + +mu_gaussian_list=(10 20 100 200 500 1000) +sigma_gaussian_list=(5 10 100 200 500) + +mu_poisson_list=(10 20 100 200 500 1000) + +mu_exp_list=(10 20 100 200 500 1000) + +mulog_lnorm_list=(2 3 4 5 6 7 8 9 10) +sdlog_lnorm_list=(1 2 3 4 5) + +for i in "$@"; do + if [ "$i" = "rand" ]; then + for seed in ${seed_list[@]}; do + for n in ${n_list[@]}; do + echo -e "\nRunning rand with seed=$seed and n=$n" + ./linsched_rand_test $i $seed $n + done + done + elif [ "$i" = "gaussian" ]; then + for seed in ${seed_list[@]}; do + for mu in ${mu_gaussian_list[@]}; do + for sigma in ${sigma_gaussian_list[@]}; do + for n in ${n_list[@]}; do + echo -e "\nRunning gaussian with seed=$seed,mu=$mu,sigma=$sigma,n=$n" + ./linsched_rand_test $i $seed $mu $sigma $n + done + done + done + done + elif [ "$i" = "poisson" ]; then + for seed in ${seed_list[@]}; do + for mu in ${mu_poisson_list[@]}; do + for n in ${n_list[@]}; do + echo -e "\nRunning poisson with seed=$seed,mu=$mu,n=$n" + ./linsched_rand_test $i $seed $mu $n + done + done + done + elif [ "$i" = "exp" ]; then + for seed in ${seed_list[@]}; do + for mu in ${mu_exp_list[@]}; do + for n in ${n_list[@]}; do + echo -e "\nRunning exponential with seed=$seed,mu=$mu,n=$n" + ./linsched_rand_test $i $seed $mu $n + done + done + done + elif [ "$i" = "lnorm" ]; then + for seed in ${seed_list[@]}; do + for mulog in ${mulog_lnorm_list[@]}; do + for sdlog in ${sdlog_lnorm_list[@]}; do + for n in ${n_list[@]}; do + echo -e "\nRunning lognormal with seed=$seed,mu=$mulog,sigma=$sdlog,n=$n" + ./linsched_rand_test $i $seed $mulog $sdlog $n + done + done + done + done + else + ./$i || die "$i failed" + fi +done diff --git a/tools/linsched/validation/Makefile b/tools/linsched/validation/Makefile new file mode 100644 index 00000000000000..9c4887fed79987 --- /dev/null +++ b/tools/linsched/validation/Makefile @@ -0,0 +1,18 @@ +LINUXDIR = ./../../.. +LINSCHED_DIR=${LINUXDIR}/tools/linsched +include ../Makefile.inc + +UNIX_TESTS := unix-mcarlo-sim trace-imbalance + + +.DEFAULT_GOAL := all +.PHONY: all + +all: ${UNIX_TESTS} + +.SECONDEXPANSION: +${UNIX_TESTS}: ${OBJ_FILES} $$@.o + @echo CC UNIX_TEST $@ + @${LD_PERCPU} -o $@.percpu $^ +#two definitions of mktime + @${CC} -Wl,--allow-multiple-definition -static -o $@ $@.percpu -lrt -lm -lpcre diff --git a/tools/linsched/validation/trace-imbalance.c b/tools/linsched/validation/trace-imbalance.c new file mode 100644 index 00000000000000..89e186f2c6480c --- /dev/null +++ b/tools/linsched/validation/trace-imbalance.c @@ -0,0 +1,327 @@ +/* + * Takes the output of perf script -D and runs load_balance_score.c + * against it. + * + * Note that even using perf script event ordering occasionally breaks + * or events get dropped, so the BUG_ONs are used to make sure such + * runs get dropped. + */ + +#define _BSD_SOURCE +#include "linsched.h" +#include "test_lib.h" +#include "load_balance_score.h" +#include "sanity_check.h" +#include <stdio.h> +#include <stdlib.h> +#include <pcre.h> + +#ifdef NDEBUG +#define debugf(...) do { } while(0) +#else +#define debugf(...) printf(__VA_ARGS__) +#endif + +struct pid_map { + int pid; + struct task_struct *p; +}; + +struct pid_map *pid_map; +int pid_map_size; + +static void move_task(struct task_struct *p, int cpu) +{ + debugf("(%d) %d -> %d\n", task_thread_info(p)->id, task_cpu(p), cpu); + if (p->on_rq) { + linsched_force_migration(p, cpu, 0); + } +} + +static void sleep_task(struct task_struct *p) +{ + int cpu = task_cpu(p); + struct rq *rq = cpu_rq(cpu); + debugf("(%d) %d -> sleep\n", task_thread_info(p)->id, cpu); + BUG_ON(!p->on_rq || p->state); + linsched_change_cpu(cpu); + if (p == rq->curr) { + p->state = TASK_INTERRUPTIBLE; + schedule(); + } else { + /* + * Technically we should somehow force the task to run + * and then do the above. Just forcing a dequeue is enough + * to get load balance scoring though. + */ + + p->state = TASK_INTERRUPTIBLE; + p->sched_class->dequeue_task(rq, p, DEQUEUE_SLEEP); + p->on_rq = 0; + rq->nr_running--; + } + +} + +static void wake_task(struct task_struct *p, int cpu) +{ + int ret; + debugf("(%d) wake %d -> %d\n", task_thread_info(p)->id, task_cpu(p), cpu); + + if (p->on_rq && task_cpu(p) == cpu) { + /* + * if we get an hrtimer interrupt between the hrtimer + * creation and the schedule() call, we get a spurious + * wakeup. Ignore it. + */ + return; + } + + BUG_ON(!p->state || p->on_rq); + linsched_change_cpu(cpu); + set_cpus_allowed(p, cpumask_of_cpu(cpu)); + ret = wake_up_process(p); + BUG_ON(!ret || p->state || !p->on_rq); +} + +struct cgroup *find_cgroup(char *target) +{ + int i, shares; + char path[512]; + struct cgroup *cg; + FILE *f; + extern int num_cgroups; /* defined in linux_linsched.c */ + + for (i = 0; i < num_cgroups; i++) { + cg = &__linsched_cgroups[i].cg; + if (cgroup_path(cg, path, sizeof(path))) + continue; + if (!strcmp(path, target)) + return cg; + } + /* only support one level deep for now */ + BUG_ON(strchr(target + 1, '/')); + snprintf(path, sizeof(path), "/dev/cgroup/cpu%s/cpu.shares", target); + f = fopen(path, "r"); + if (!f || fscanf(f, "%d", &shares) != 1) + return NULL; + fclose(f); + cg = linsched_create_cgroup(root_cgroup, target + 1); + sched_group_set_shares(cgroup_tg(cg), shares); + return cg; +} + +int find_cpu_cgroup(void) +{ + FILE *f; + char line[256]; + int id; + f = fopen("/proc/cgroups", "r"); + BUG_ON(!f); + + while (fgets(line, sizeof(line), f)) { + if (sscanf(line, "cpu %d %*d 1", &id) == 1) { + return id; + } + } + BUG(); + return -1; +} + +struct pid_map *pid_find(int pid) +{ + int i = pid % pid_map_size; + while (pid_map[i].pid != pid && pid_map[i].pid) { + i++; + i %= pid_map_size; + } + return &pid_map[i]; +} + +pcre *re_comp(const char *regex) { + const char *err_str; + int err_place; + pcre *res = pcre_compile(regex, 0, &err_str, &err_place, NULL); + if (!res) { + printf("%s: at %d in %s\n", err_str, err_place, regex); + BUG(); + } + return res; +} + +int re_exec(pcre *re, char *str, int *ovec, int ovecsize) { + int res = pcre_exec(re, NULL, str, strlen(str), 0, 0, ovec, ovecsize); + BUG_ON(res < 0 && res != PCRE_ERROR_NOMATCH); + return res; +} + +char *group(char *line, int *ovec, int group) +{ + int start = ovec[group * 2]; + int end = ovec[group * 2 + 1]; + BUG_ON(start < 0 || end < 0); + line[end] = '\0'; + return &line[start]; +} + +/* Now that everything is set up parse stdin from perf script -D + * format into calls to wake_task/sleep_task/move_task */ +void run_input(void) +{ + pcre *timestamp_re, *common_re, *switch_re, *migrate_re, *wakeup_re; + u64 next_ns = 0; + char line[512]; + + timestamp_re = re_comp("[0-9]+ ([0-9]+) 0x.*: PERF_RECORD_SAMPLE.*"); + + common_re = re_comp("^.* \\[([0-9]*)\\] *([0-9]*)\\.([0-9]*):" + " ([^:]*): (.*)$"); + + wakeup_re = re_comp("^comm=.* pid=([0-9]*) .* target_cpu=*([0-9]*)"); + switch_re = re_comp("^prev_comm.* prev_pid=([0-9]*) .* prev_state=[^R ]+" + " ==> next_comm.*"); + migrate_re = re_comp("^comm.* pid=([0-9]*) .* dest_cpu=([0-9]*)"); + + while(fgets(line, sizeof(line), stdin)) { + struct pid_map *pid; + char *tail, *name; + int ovec[30]; + int res; + long long secs, usecs; + int cpu; + tail = strchr(line, '\n'); + if (tail) + *tail = '\0'; + + res = re_exec(timestamp_re, line, ovec, ARRAY_SIZE(ovec)); + if (res > 0) { + next_ns = strtoull(group(line, ovec, 1), NULL, 10); + continue; + } + + res = re_exec(common_re, line, ovec, ARRAY_SIZE(ovec)); + if (res < 0) + continue; + + cpu = atoi(group(line, ovec, 1)); + secs = atoll(group(line, ovec, 2)); + usecs = atoll(group(line, ovec, 3)); + name = group(line, ovec, 4); + tail = group(line, ovec, 5); + current_time = secs * 1000000000ULL + usecs * 1000; + if (next_ns > current_time && next_ns - current_time < 1000) + current_time = next_ns; + next_ns = 0; + + if (!strcmp(name, "sched_wakeup")) { + res = re_exec(wakeup_re, tail, ovec, ARRAY_SIZE(ovec)); + BUG_ON(res < 0); + pid = pid_find(atol(group(tail, ovec, 1))); + cpu = atoi(group(tail, ovec, 2)); + if (!pid->p) + continue; + + wake_task(pid->p, cpu); + } else if(!strcmp(name, "sched_switch")) { + res = re_exec(switch_re, tail, ovec, ARRAY_SIZE(ovec)); + if (res < 0) + continue; + pid = pid_find(atol(group(tail, ovec, 1))); + if (!pid->p) + continue; + + sleep_task(pid->p); + } else if (!strcmp(name, "sched_migrate_task")) { + res = re_exec(migrate_re, tail, ovec, ARRAY_SIZE(ovec)); + BUG_ON(res < 0); + pid = pid_find(atol(group(tail, ovec, 1))); + cpu = atoi(group(tail, ovec, 2)); + if (!pid->p) + continue; + + move_task(pid->p, cpu); + } + + linsched_enable_migrations(); + compute_lb_info(); + for_each_online_cpu(cpu) { + linsched_change_cpu(cpu); + run_sanity_check(); + } + linsched_disable_migrations(); + } +} + +int linsched_test_main(int argc, char **argv) +{ + struct linsched_topology topo; + struct cpumask monitor_cpus; + int cpu, i; + int cpu_cgroup; + cpumask_var_t *doms = alloc_sched_domains(2); + + if (argc < 4) { + fprintf(stderr, "Usage: %s <topology> <monitoring cpus> <pid> ...\n", argv[0]); + return 1; + } + + topo = linsched_topo_db[parse_topology(argv[1])]; + + linsched_init(&topo); + + if (cpulist_parse(argv[2], &monitor_cpus)) { + BUG(); + } + + cpu_cgroup = find_cpu_cgroup(); + + /* Turn off the cpus used for monitoring. This is entirely + * equivalent for our purposes to the cpuset-like that + * mcarlo-sim does. */ + for_each_cpu(cpu, &monitor_cpus) { + linsched_offline_cpu(cpu); + } + + pid_map_size = (argc - 3) * 2; /* 2 * npids */ + pid_map = calloc(pid_map_size, sizeof(struct pid_map)); + + for (i = 3; i < argc; i++) { + char line[512]; + FILE *f; + int pid = atoi(argv[i]); + struct pid_map *pmap; + struct task_data *td = linsched_create_sleep_run(0, 10); + struct task_struct *p = linsched_create_normal_task(td, 0); + struct cgroup *cg = NULL; + snprintf(line, sizeof(line), "/proc/%d/cgroup", pid); + f = fopen(line, "r"); + BUG_ON(!f); + while (fgets(line, sizeof(line), f)) { + int id; + int len; + if (sscanf(line, "%d:%*[^:]:%n", &id, &len) < 1) + continue; + if (id == cpu_cgroup) { + char *nl = strchr(line, '\n'); + if (nl) + *nl = '\0'; + cg = find_cgroup(&line[len]); + break; + } + } + BUG_ON(!cg); + linsched_add_task_to_group(p, cg); + sleep_task(p); + + pmap = pid_find(pid); + pmap->p = p; + pmap->pid = pid; + } + + linsched_disable_migrations(); + + run_input(); + + printf("average imbalance: %f\n", get_average_imbalance()); + return 0; +} diff --git a/tools/linsched/validation/unix-mcarlo-sim-init.sh b/tools/linsched/validation/unix-mcarlo-sim-init.sh new file mode 100644 index 00000000000000..2cd1392a5da43b --- /dev/null +++ b/tools/linsched/validation/unix-mcarlo-sim-init.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Cgroup initialization for unix-mcarlo-sim, because the file +# manipulation would be painful in C. + +die () { + [ -n "$*" ] && echo "$@" >&2 + echo 'cgroup initialization failed' >&2 + exit 1 +} + +move_tasks () { + from=$1 + to=$2 + for t in $(cat $from/tasks); do + echo $t > $to/tasks 2>/dev/null + done +} + +for h in /dev/cgroup/*; do + find $h -mindepth 1 -depth -type d | while read cg; do + move_tasks $cg $h + rmdir $cg 2> /dev/null + done +done + +umount /dev/cgroup/* +rmdir /dev/cgroup/* 2> /dev/null +rm -rf /dev/cgroup/* 2> /dev/null +mkdir /dev/cgroup/cpu /dev/cgroup/cpuset +mount -t cgroup -o cpu,cpuacct none /dev/cgroup/cpu || die +mount -t cgroup -o cpuset none /dev/cgroup/cpuset || die + +mkdir /dev/cgroup/cpuset/test /dev/cgroup/cpuset/monitor 2>/dev/null +[ -f /dev/cgroup/cpuset/test/cpuset.cpus -a \ + -f /dev/cgroup/cpuset/monitor/cpuset.cpus ] || die "cpuset cgroups failed" + +echo $1 > /dev/cgroup/cpuset/test/cpuset.cpus || die +echo $2 > /dev/cgroup/cpuset/monitor/cpuset.cpus || die +cat /dev/cgroup/cpuset/cpuset.mems > /dev/cgroup/cpuset/monitor/cpuset.mems || die +cat /dev/cgroup/cpuset/cpuset.mems > /dev/cgroup/cpuset/test/cpuset.mems || die + +move_tasks /dev/cgroup/cpuset /dev/cgroup/cpuset/monitor +echo 0 > /dev/cgroup/cpuset/cpuset.sched_load_balance || die +echo 1 > /dev/cgroup/cpuset/test/cpuset.sched_load_balance || die diff --git a/tools/linsched/validation/unix-mcarlo-sim-monitor.sh b/tools/linsched/validation/unix-mcarlo-sim-monitor.sh new file mode 100644 index 00000000000000..30ef15eca61a70 --- /dev/null +++ b/tools/linsched/validation/unix-mcarlo-sim-monitor.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# Monitor and produce statistics comparable to +# mcarlo-sim --print_cgroup_stats --print_average_imbalance --print_sched_stats +# and then clean up + +BASE_DIR="$(dirname $0)" +DURATION="$1" +TOPO="$2" +MONITOR_CPUS="$3" + +CHILDREN=$(pgrep -P $$) +CHILDREN=$(echo $CHILDREN) #squash the lines together +CPUACCT_NAMES=( $(find /dev/cgroup/cpu -name cpuacct.usage) ) + +# take schedstats delta (primarily for number of load balences) +CPUACCT_BEFORE=( $(cat "${CPUACCT_NAMES[@]}" ) ) +cat /proc/schedstat > schedstat.before + +# grab trace (of _all_ cpus - cpuset away ones still start load balances) +perf record -a -T -e sched:sched_wakeup -e sched:sched_switch -e sched:sched_migrate_task -- \ + bash -c \ +"sleep 1; +kill -CONT $CHILDREN; +sleep $( echo $DURATION / 1000 | bc -l); +kill -STOP $CHILDREN" + +CPUACCT_AFTER=( $(cat "${CPUACCT_NAMES[@]}" ) ) +cat /proc/schedstat > schedstat.after + +echo ------ group runtime +for i in "${!CPUACCT_NAMES[@]}"; do + name="${CPUACCT_NAMES[$i]}" + name="${name#/dev/cgroup/cpu}" + name="${name%/cpuacct.usage}" + [ -z "$name" ] && name=/ + usage="$(( ${CPUACCT_AFTER[$i]} - ${CPUACCT_BEFORE[$i]} ))" + echo "CGroup = $name exec_time = $usage" +done | tac +echo ------ sched stats +$BASE_DIR/schedstat-diff.py schedstat.before schedstat.after + +perf script -D | grep -v '^#\|^\.' | \ + $BASE_DIR/trace-imbalance $TOPO $MONITOR_CPUS $CHILDREN | tail | tee imbalance +kill -KILL $CHILDREN + +# Cleanup +echo 1 > /dev/cgroup/cpuset/cpuset.sched_load_balance +move_tasks () { + from=$1 + to=$2 + for t in $(cat $from/tasks); do + echo $t > $to/tasks 2>/dev/null + done +} + +for h in /dev/cgroup/*; do + find $h -mindepth 1 -depth -type d | while read cg; do + move_tasks $cg $h + rmdir $cg 2> /dev/null + done +done + +umount /dev/cgroup/* +rmdir /dev/cgroup/* 2> /dev/null +rm -rf /dev/cgroup/* 2> /dev/null + +if grep 'BUG\|nan' imbalance >& /dev/null; then + echo error $$ >&2 + exit 1 +fi diff --git a/tools/linsched/validation/unix-mcarlo-sim.c b/tools/linsched/validation/unix-mcarlo-sim.c new file mode 100644 index 00000000000000..3bba27918276cc --- /dev/null +++ b/tools/linsched/validation/unix-mcarlo-sim.c @@ -0,0 +1,298 @@ +/* + * Runs the equivalent of mcarlo-sim on the current machine instead of + * in simulation. Requires root. + * + * Prints the equivalent of --print_cgroup_stats + * --print_average_imbalance --print_sched_stats + * + * Requires the arguments -c to specify a cpu list to run the tests + * on, and -m to specify the cpus to monitor from, as well as the + * normal mcarlo-sim ones. + * + * Depends on the scripts schedstat-diff.py, unix-mcarlo-sim-init.sh, + * and unix-mcarlo-sim-monitor.sh being in the same directory. + */ + +#define __STRICT_ANSI__ +#include <errno.h> +#undef __always_inline +#include "linsched.h" +#include "linsched_rand.h" +#include "linsched_sim.h" +#include "test_lib.h" +#include <string.h> +#include <getopt.h> +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#include <unistd.h> +#define _SYS_RESOURCE_H +#include <sys/wait.h> + +/* Faked header include due to conflicts with linux_sched_headers.h */ +/* #include <time.h> */ +int nanosleep(const struct timespec *req, struct timespec *rem); +int clock_gettime(clockid_t clk_id, struct timespec *tp); +/* #include <signal.h> */ +int killpg(int pgrp, int sig); +int kill(pid_t pid, int sig); +/* #include <sys/stat.h> */ +int mkdir(const char *pathname, mode_t mode); + + +static char exec_dir[512]; + +s64 time_sub(struct timespec *end, struct timespec *start) +{ + return (end->tv_sec - start->tv_sec) * NSEC_PER_SEC + + end->tv_nsec - start->tv_nsec; +} + +void sleep_cycle(u64 ns) +{ + struct timespec dur = {0, 0}; + struct timespec rem = { ns / NSEC_PER_SEC, ns % NSEC_PER_SEC }; + int rc = 0; + + do { + dur = rem; + rc = nanosleep(&dur, &rem); + } while(rc == -1 && errno == EINTR); +} + +void busy_cycle(u64 ns) +{ + struct timespec start, prev, cur; + clock_gettime(CLOCK_MONOTONIC, &start); + cur = start; + do { + long delta; + prev = cur; + clock_gettime(CLOCK_MONOTONIC, &cur); + delta = time_sub(&cur, &prev); + /* assume skips of 2+ microseconds are due to context switch */ + if(delta > 2000) { + ns += delta; + } + } while(time_sub(&cur, &start) < ns); +} + +void run_rand_dist(struct rnd_dist_task *d) +{ + struct rand_dist *sdist = d->sleep_rdist; + struct rand_dist *bdist = d->busy_rdist; + + kill(getpid(), SIGSTOP); + + while(1) { + busy_cycle(d->busy); + d->sleep = sdist->gen_fn(sdist); + d->busy = bdist->gen_fn(bdist); + if (!d->sleep) + d->sleep = 1; + sleep_cycle(d->sleep); + } +} + + + +void print_usage(char *cmd) +{ + printf("Usage: %s -c <cpulist> -m <cpulist> -f <SHARES_FILE>" + " --duration <SIMDUARATION> -t <topology> [-s seed]\n", cmd); +} + +void append_file(char *fn, char *contents) +{ + FILE *f = fopen(fn, "a"); + fputs(contents, f); + fclose(f); +} + +void write_file(char *fn, char *contents) +{ + FILE *f = fopen(fn, "a"); + fputs(contents, f); + fclose(f); +} + + +void run_mcarlo_sim(struct linsched_sim *sim, char *cpus, char *monitor_cpus, + char *duration, char *topo) +{ + int group; + char buf[512]; + int pid = getpid(); + int ret; + int total_tasks = 0; + + /* invoke half of this via a shell script to avoid painful + * directory traversal in C */ + + sprintf(buf, "%s/unix-mcarlo-sim-init.sh %s %s", exec_dir, + cpus, monitor_cpus); + ret = system(buf); + if (ret) { + if (ret == -1) { + int err = errno; + fprintf(stderr, "Unable to run '%s': ", buf); + errno = err; + perror(NULL); + } + exit(1); + } + + sprintf(buf, "%d", pid); + append_file("/dev/cgroup/cpuset/test/tasks", buf); + for(group = 0; group < sim->n_task_grps; group++) { + char cg_base[512], path[512]; + struct linsched_tg_sim *tgsim = sim->tg_sim_arr[group]; + int task; + cgroup_path(tgsim->cg, buf, sizeof(buf)); + sprintf(cg_base, "/dev/cgroup/cpu%s", buf); + + mkdir(cg_base, 0777); + + sprintf(buf, "%lu", cgroup_tg(tgsim->cg)->shares); + sprintf(path, "%s/cpu.shares", cg_base); + write_file(path, buf); + + sprintf(buf, "%d", pid); + sprintf(path, "%s/tasks", cg_base); + append_file(path, buf); + + for(task = 0; task < tgsim->n_tasks; task++) { + if(!fork()) { + struct task_data *td; + /* child automatically in the correct cgroups */ + + td = task_thread_info(tgsim->tasks[task])->td; + run_rand_dist(td->data); + } + total_tasks++; + } + } + sprintf(buf, "%d", pid); + append_file("/dev/cgroup/cpuset/monitor/tasks", buf); + append_file("/dev/cgroup/cpu/tasks", buf); + + while(total_tasks) { + int status; + pid_t cpid; + cpid = waitpid(0, &status, WUNTRACED); + if (cpid == -1) { + perror("failed waitpid"); + exit(1); + } + if (!WIFSTOPPED(status)) { + char *msg = "??? with raw status"; + int num = status; + + if (WIFEXITED(status)) { + msg = "exited with code"; + num = WEXITSTATUS(status); + } else if (WIFSIGNALED(status)) { + msg = "killed by signal"; + num = WTERMSIG(status); + } + fprintf(stderr, "Child %d %s %d", cpid, msg, num); + killpg(0, SIGTERM); + exit(1); + } + total_tasks--; + } + + sprintf(buf, "%s/unix-mcarlo-sim-monitor.sh", exec_dir); + ret = execl(buf, buf, duration, topo, monitor_cpus, NULL); + perror("execl of monitoring script failed"); + exit(1); +} + +int linsched_test_main(int argc, char **argv) +{ + int c; + char tg_file[512] = "", cpus[64] = "", monitor_cpus[64] = ""; + char duration[64] = "", topo[64] = ""; + unsigned int seed = getticks(); + char *slash; + + strcpy(exec_dir, argv[0]); + slash = strrchr(exec_dir, '/'); + if (slash) { + *slash = '\0'; + } else { + strcpy(exec_dir, "."); + } + + while (1) { + static struct option const long_options[] = { + {"cpus", required_argument, 0, 'c'}, + {"monitor_cpus", required_argument, 0, 'm'}, + {"topo", required_argument, 0, 't'}, + {"tg_file", required_argument, 0, 'f'}, + {"duration", required_argument, 0, 'd'}, + {"seed", required_argument, 0, 's'}, + {0, 0, 0, 0} + }; + /* getopt_long stores the option index here. */ + int option_index = 0; + + c = getopt_long(argc, argv, "t:f:d:s:c:m:", + long_options, &option_index); + + /* Detect the end of the options. */ + if (c == -1) + break; + + switch (c) { + case 'c': + strcpy(cpus, optarg); + break; + + case 'm': + strcpy(monitor_cpus, optarg); + break; + + case 'f': + strcpy(tg_file, optarg); + break; + + case 'd': + strcpy(duration, optarg); + break; + case 't': + strcpy(topo, optarg); + break; + case 's': + seed = simple_strtoul(optarg, NULL, 0); + break; + case '?': + /* getopt_long already printed an error message. */ + break; + } + } + + if (strcmp(cpus, "") && strcmp(monitor_cpus, "") && + strcmp(tg_file, "") && strcmp(duration, "") && + strcmp(topo, "")) { + fprintf(stdout, "\nMonitoring cpus = %s, test cpus = %s, " + "tg_file = %s, duration = %s\n", + monitor_cpus, cpus, tg_file, duration); + struct linsched_topology ltopo = TOPO_UNIPROCESSOR; + struct linsched_sim *lsim; + unsigned int *rand_state = linsched_init_rand(seed); + + linsched_init(<opo); + lsim = linsched_create_sim(tg_file, cpu_online_mask, rand_state); + if (lsim) { + run_mcarlo_sim(lsim, cpus, monitor_cpus, duration, topo); + } else { + fprintf(stderr, "failed to create simulation.\n"); + print_usage("unix-mcarlo-sim"); + } + } else { + print_usage(argv[0]); + } + + return 0; +} |