On Sat, 2009-02-28 at 15:34 +0530, Poornima Nayak wrote: > This patch will integrate ebizzy into LTP in utils/benchmark path. > Mail has been sent to Author of ebizzy to ack this patch. > > Signed-off-by: poornima nayak <[email protected]>
Thanks. Regards-- Subrata > diff -uprN ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/ChangeLog > ltp-full-20090131/utils/benchmark/ebizzy-0.2/ChangeLog > --- ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/ChangeLog > 1969-12-31 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/ebizzy-0.2/ChangeLog 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,14 @@ > +2008-08-15 Valerie Henson <[email protected]> > + > + * Release 0.2. > + > + * Started reporting a rate of transactions per second rather than > + just measuring the time. > + > + * Solaris compatibility, thanks to Rodrigo Rubira Branco > + <[email protected]> for frequent patches and testing. > + > + * rand() was limiting scalability, use cheap dumb inline "random" > + function to avoid that. Thanks to Brian Twichell > + <[email protected]> for finding it and Yong Cai > + <[email protected]> for testing. > diff -uprN ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/configure > ltp-full-20090131/utils/benchmark/ebizzy-0.2/configure > --- ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/configure > 1969-12-31 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/ebizzy-0.2/configure 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,27 @@ > +#!/bin/bash > + > +if [ "`uname -s`" != "Linux" ] && [ "`uname -s`" != "SunOS" ]; then > + echo "Only Linux or Solaris supported" > + exit 1 > +fi > + > +LIBS="-lpthread" > +FLAGS="" > + > +if [ "`uname -s`" = "SunOS" ]; then > + LIBS="${LIBS} -lmalloc" > + FLAGS="${FLAGS} -D_solaris" > +fi > + > +cat <<EOF > Makefile > +all: ebizzy > + > +ebizzy: ebizzy.c > + gcc -Wall -Wshadow ${LIBS} ${FLAGS} -o ebizzy ebizzy.c > + > +clean: > + rm -f ebizzy *~ > +EOF > + > +echo "Type 'make' to compile" > + > diff -uprN ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/ebizzy.c > ltp-full-20090131/utils/benchmark/ebizzy-0.2/ebizzy.c > --- ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/ebizzy.c > 1969-12-31 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/ebizzy-0.2/ebizzy.c 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,519 @@ > +/* > + * Ebizzy - replicate a large ebusiness type of workload. > + * > + * Written by Valerie Henson <[email protected]> > + * > + * Copyright 2006 - 2007 Intel Corporation > + * Copyright 2007 Valerie Henson <[email protected]> > + * > + * Rodrigo Rubira Branco <[email protected]> - Solaris port > + * > + * 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; version 2 of the License. > + * > + * 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; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 > + * USA > + * > + */ > + > +/* > + * This program is designed to replicate a common web search app > + * workload. A lot of search applications have the basic pattern: Get > + * a request to find a certain record, index into the chunk of memory > + * that contains it, copy it into another chunk, then look it up via > + * binary search. The interesting parts of this workload are: > + * > + * Large working set > + * Data alloc/copy/free cycle > + * Unpredictable data access patterns > + * > + * Fiddle with the command line options until you get something > + * resembling the kind of workload you want to investigate. > + * > + */ > + > +#include <stdio.h> > +#include <unistd.h> > +#include <stdlib.h> > +#include <malloc.h> > +#include <sys/mman.h> > +#include <pthread.h> > +#include <string.h> > +#include <time.h> > +#include <sys/time.h> > +#include <sys/resource.h> > + > +/* > + * Solaris compatibility stuff > + */ > + > +#ifdef _solaris > +#define MMAP_ANONYMOUS MMAP_ANON > +#define M_MMAP_MAX (-4) > +#endif > + > +/* > + * Command line options > + */ > + > +static unsigned int always_mmap; > +static unsigned int never_mmap; > +static unsigned int chunks; > +static unsigned int use_permissions; > +static unsigned int use_holes; > +static unsigned int random_size; > +static unsigned int chunk_size; > +static unsigned int seconds; > +static unsigned int threads; > +static unsigned int verbose; > +static unsigned int linear; > +static unsigned int no_lib_memcpy; > + > +/* > + * Other global variables > + */ > + > +typedef size_t record_t; > +static unsigned int record_size = sizeof (record_t); > +static char *cmd; > +static record_t **mem; > +static char **hole_mem; > +static unsigned int page_size; > +static time_t start_time; > +static volatile int threads_go; > +static unsigned int records_read; > + > +static void > +usage(void) > +{ > + fprintf(stderr, "Usage: %s [options]\n" > + "-l\t\t Don't use library memcpy\n" > + "-m\t\t Always use mmap instead of malloc\n" > + "-M\t\t Never use mmap\n" > + "-n <num>\t Number of memory chunks to allocate\n" > + "-p \t\t Prevent mmap coalescing using permissions\n" > + "-P \t\t Prevent mmap coalescing using holes\n" > + "-R\t\t Randomize size of memory to copy and search\n" > + "-s <size>\t Size of memory chunks, in bytes\n" > + "-S <seconds>\t Number of seconds to run\n" > + "-t <num>\t Number of threads (2 * number cpus by default)\n" > + "-v[v[v]]\t Be verbose (more v's for more verbose)\n" > + "-z\t\t Linear search instead of binary search\n", > + cmd); > + exit(1); > +} > + > +/* > + * Read options, check them, and set some defaults. > + */ > + > +static void > +read_options(int argc, char *argv[]) > +{ > + int c; > + > + page_size = getpagesize(); > + > + /* > + * Set some defaults. These are currently tuned to run in a > + * reasonable amount of time on my laptop. > + * > + * We could set the static defaults in the declarations, but > + * then the defaults would be split between here and the top > + * of the file, which is annoying. > + */ > + > + threads = 2 * sysconf(_SC_NPROCESSORS_ONLN); > + chunks = 10; > + chunk_size = record_size * 64 * 1024; > + seconds = 10; > + > + /* On to option processing */ > + > + cmd = argv[0]; > + opterr = 1; > + > + while ((c = getopt(argc, argv, "lmMn:pPRs:S:t:vz")) != -1) { > + switch (c) { > + case 'l': > + no_lib_memcpy = 1; > + break; > + case 'm': > + always_mmap = 1; > + break; > + case 'M': > + never_mmap = 1; > + break; > + case 'n': > + chunks = atoi(optarg); > + if (chunks == 0) > + usage(); > + break; > + case 'p': > + use_permissions = 1; > + break; > + case 'P': > + use_holes = 1; > + break; > + case 'R': > + random_size = 1; > + break; > + case 's': > + chunk_size = atoi(optarg); > + if (chunk_size == 0) > + usage(); > + break; > + case 'S': > + seconds = atoi(optarg); > + if (seconds == 0) > + usage(); > + break; > + case 't': > + threads = atoi(optarg); > + if (threads == 0) > + usage(); > + break; > + case 'v': > + verbose++; > + break; > + case 'z': > + linear = 1; > + break; > + default: > + usage(); > + } > + } > + > + if (verbose) > + printf("ebizzy 0.2\n" > + "(C) 2006-7 Intel Corporation\n" > + "(C) 2007 Valerie Henson <[email protected]>\n"); > + > + if (verbose) { > + printf("always_mmap %u\n", always_mmap); > + printf("never_mmap %u\n", never_mmap); > + printf("chunks %u\n", chunks); > + printf("prevent coalescing using permissions %u\n", > + use_permissions); > + printf("prevent coalescing using holes %u\n", use_holes); > + printf("random_size %u\n", random_size); > + printf("chunk_size %u\n", chunk_size); > + printf("seconds %d\n", seconds); > + printf("threads %u\n", threads); > + printf("verbose %u\n", verbose); > + printf("linear %u\n", linear); > + printf("page size %d\n", page_size); > + } > + > + /* Check for incompatible options */ > + > + if (always_mmap && never_mmap) { > + fprintf(stderr, "Both -m \"always mmap\" and -M " > + "\"never mmap\" option specified\n"); > + usage(); > + } > + > + if (never_mmap) > + mallopt(M_MMAP_MAX, 0); > + > + if (chunk_size < record_size) { > + fprintf(stderr, "Chunk size %u smaller than record size %u\n", > + chunk_size, record_size); > + usage(); > + } > +} > + > +static void * > +alloc_mem(size_t size) > +{ > + char *p; > + int err = 0; > + > + if (always_mmap) { > + p = mmap((void *) 0, size, (PROT_READ | PROT_WRITE), > + (MAP_PRIVATE | MAP_ANONYMOUS), -1, 0); > + if (p == MAP_FAILED) > + err = 1; > + } else { > + p = malloc(size); > + if (p == NULL) > + err = 1; > + } > + > + if (err) { > + fprintf(stderr, "Couldn't allocate %zu bytes, try smaller " > + "chunks or size options\n" > + "Using -n %u chunks and -s %u size\n", > + size, chunks, chunk_size); > + exit(1); > + } > + > + return (p); > +} > + > +static void > +free_mem(void *p, size_t size) > +{ > + if (always_mmap) > + munmap(p, size); > + else > + free(p); > +} > + > +/* > + * Factor out differences in memcpy implementation by optionally using > + * our own simple memcpy implementation. > + */ > + > +static void > +my_memcpy(void *dest, void *src, size_t len) > +{ > + char *d = (char *) dest; > + char *s = (char *) src; > + int i; > + > + for (i = 0; i < len; i++) > + d[i] = s[i]; > + return; > +} > + > +static void > +allocate(void) > +{ > + int i; > + > + mem = alloc_mem(chunks * sizeof (record_t *)); > + > + if (use_holes) > + hole_mem = alloc_mem(chunks * sizeof (record_t *)); > + > + > + for (i = 0; i < chunks; i++) { > + mem[i] = (record_t *) alloc_mem(chunk_size); > + /* Prevent coalescing using holes */ > + if (use_holes) > + hole_mem[i] = alloc_mem(page_size); > + } > + > + /* Free hole memory */ > + if (use_holes) > + for (i = 0; i < chunks; i++) > + free_mem(hole_mem[i], page_size); > + > + if (verbose) > + printf("Allocated memory\n"); > +} > + > +static void > +write_pattern(void) > +{ > + int i, j; > + > + for (i = 0; i < chunks; i++) { > + for(j = 0; j < chunk_size / record_size; j++) > + mem[i][j] = (record_t) j; > + /* Prevent coalescing by alternating permissions */ > + if (use_permissions && (i % 2) == 0) > + mprotect((void *) mem[i], chunk_size, PROT_READ); > + } > + if (verbose) > + printf("Wrote memory\n"); > +} > + > +static void * > +linear_search(record_t key, record_t *base, size_t size) > +{ > + record_t *p; > + record_t *end = base + (size / record_size); > + > + for(p = base; p < end; p++) > + if (*p == key) > + return p; > + return NULL; > +} > + > +static int > +compare(const void *p1, const void *p2) > +{ > + return (* (record_t *) p1 - * (record_t *) p2); > +} > + > +/* > + * Stupid ranged random number function. We don't care about quality. > + * > + * Inline because it's starting to be a scaling issue. > + */ > + > +static inline unsigned int > +rand_num(unsigned int max, unsigned int state) > +{ > + state = state * 1103515245 + 12345; > + return ((state/65536) % max); > +} > + > +/* > + * This function is the meat of the program; the rest is just support. > + * > + * In this function, we randomly select a memory chunk, copy it into a > + * newly allocated buffer, randomly select a search key, look it up, > + * then free the memory. An option tells us to allocate and copy a > + * randomly sized chunk of the memory instead of the whole thing. > + * > + * Linear search provided for sanity checking. > + * > + */ > + > +static unsigned int > +search_mem(void) > +{ > + record_t key, *found; > + record_t *src, *copy; > + unsigned int chunk; > + size_t copy_size = chunk_size; > + unsigned int i; > + unsigned int state; > + > + for (i = 0; threads_go == 1; i++) { > + chunk = rand_num(chunks, state); > + src = mem[chunk]; > + /* > + * If we're doing random sizes, we need a non-zero > + * multiple of record size. > + */ > + if (random_size) > + copy_size = (rand_num(chunk_size / record_size, state) > + + 1) * record_size; > + copy = alloc_mem(copy_size); > + if (no_lib_memcpy) > + my_memcpy(copy, src, copy_size); > + else > + memcpy(copy, src, copy_size); > + key = rand_num(copy_size / record_size, state); > + > + if (verbose > 2) > + printf("Search key %zu, copy size %zu\n", key, > copy_size); > + if (linear) > + found = linear_search(key, copy, copy_size); > + else > + found = bsearch(&key, copy, copy_size / record_size, > + record_size, compare); > + /* Below check is mainly for memory corruption or other bug */ > + if (found == NULL) { > + fprintf(stderr, "Couldn't find key %zd\n", key); > + exit(1); > + } > + free_mem(copy, copy_size); > + } > + > + return (i); > +} > + > +static void * > +thread_run(void *arg) > +{ > + > + if (verbose > 1) > + printf("Thread started\n"); > + > + /* Wait for the start signal */ > + > + while (threads_go == 0); > + > + records_read += search_mem(); > + > + if (verbose > 1) > + printf("Thread finished, %f seconds\n", > + difftime(time(NULL), start_time)); > + > + return NULL; > +} > + > +static struct timeval > +difftimeval(struct timeval *end, struct timeval *start) > +{ > + struct timeval diff; > + diff.tv_sec = end->tv_sec - start->tv_sec; > + diff.tv_usec = end->tv_usec - start->tv_usec; > + return diff; > +} > + > +static void > +start_threads(void) > +{ > + pthread_t thread_array[threads]; > + double elapsed; > + unsigned int i; > + struct rusage start_ru, end_ru; > + struct timeval usr_time, sys_time; > + int err; > + > + if (verbose) > + printf("Threads starting\n"); > + > + for (i = 0; i < threads; i++) { > + err = pthread_create(&thread_array[i], NULL, thread_run, NULL); > + if (err) { > + fprintf(stderr, "Error creating thread %d\n", i); > + exit(1); > + } > + } > + > + /* > + * Begin accounting - this is when we actually do the things > + * we want to measure. */ > + > + getrusage(RUSAGE_SELF, &start_ru); > + start_time = time(NULL); > + threads_go = 1; > + sleep(seconds); > + threads_go = 0; > + elapsed = difftime(time(NULL), start_time); > + getrusage(RUSAGE_SELF, &end_ru); > + > + /* > + * The rest is just clean up. > + */ > + > + for (i = 0; i < threads; i++) { > + err = pthread_join(thread_array[i], NULL); > + if (err) { > + fprintf(stderr, "Error joining thread %d\n", i); > + exit(1); > + } > + } > + > + if (verbose) > + printf("Threads finished\n"); > + > + printf("%u records/s\n", > + (unsigned int) (((double) records_read)/elapsed)); > + > + usr_time = difftimeval(&end_ru.ru_utime, &start_ru.ru_utime); > + sys_time = difftimeval(&end_ru.ru_stime, &start_ru.ru_stime); > + > + printf("real %5.2f s\n", elapsed); > + printf("user %5.2f s\n", usr_time.tv_sec + usr_time.tv_usec/1e6); > + printf("sys %5.2f s\n", sys_time.tv_sec + sys_time.tv_usec/1e6); > +} > + > +int > +main(int argc, char *argv[]) > +{ > + read_options(argc, argv); > + > + allocate(); > + > + write_pattern(); > + > + start_threads(); > + > + return 0; > +} > diff -uprN ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/LICENSE > ltp-full-20090131/utils/benchmark/ebizzy-0.2/LICENSE > --- ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/LICENSE > 1969-12-31 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/ebizzy-0.2/LICENSE 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,340 @@ > + GNU GENERAL PUBLIC LICENSE > + Version 2, June 1991 > + > + Copyright (C) 1989, 1991 Free Software Foundation, Inc. > + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 > USA > + Everyone is permitted to copy and distribute verbatim copies > + of this license document, but changing it is not allowed. > + > + Preamble > + > + The licenses for most software are designed to take away your > +freedom to share and change it. By contrast, the GNU General Public > +License is intended to guarantee your freedom to share and change free > +software--to make sure the software is free for all its users. This > +General Public License applies to most of the Free Software > +Foundation's software and to any other program whose authors commit to > +using it. (Some other Free Software Foundation software is covered by > +the GNU Library General Public License instead.) You can apply it to > +your programs, too. > + > + When we speak of free software, we are referring to freedom, not > +price. Our General Public Licenses are designed to make sure that you > +have the freedom to distribute copies of free software (and charge for > +this service if you wish), that you receive source code or can get it > +if you want it, that you can change the software or use pieces of it > +in new free programs; and that you know you can do these things. > + > + To protect your rights, we need to make restrictions that forbid > +anyone to deny you these rights or to ask you to surrender the rights. > +These restrictions translate to certain responsibilities for you if you > +distribute copies of the software, or if you modify it. > + > + For example, if you distribute copies of such a program, whether > +gratis or for a fee, you must give the recipients all the rights that > +you have. You must make sure that they, too, receive or can get the > +source code. And you must show them these terms so they know their > +rights. > + > + We protect your rights with two steps: (1) copyright the software, and > +(2) offer you this license which gives you legal permission to copy, > +distribute and/or modify the software. > + > + Also, for each author's protection and ours, we want to make certain > +that everyone understands that there is no warranty for this free > +software. If the software is modified by someone else and passed on, we > +want its recipients to know that what they have is not the original, so > +that any problems introduced by others will not reflect on the original > +authors' reputations. > + > + Finally, any free program is threatened constantly by software > +patents. We wish to avoid the danger that redistributors of a free > +program will individually obtain patent licenses, in effect making the > +program proprietary. To prevent this, we have made it clear that any > +patent must be licensed for everyone's free use or not licensed at all. > + > + The precise terms and conditions for copying, distribution and > +modification follow. > + > + GNU GENERAL PUBLIC LICENSE > + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION > + > + 0. This License applies to any program or other work which contains > +a notice placed by the copyright holder saying it may be distributed > +under the terms of this General Public License. The "Program", below, > +refers to any such program or work, and a "work based on the Program" > +means either the Program or any derivative work under copyright law: > +that is to say, a work containing the Program or a portion of it, > +either verbatim or with modifications and/or translated into another > +language. (Hereinafter, translation is included without limitation in > +the term "modification".) Each licensee is addressed as "you". > + > +Activities other than copying, distribution and modification are not > +covered by this License; they are outside its scope. The act of > +running the Program is not restricted, and the output from the Program > +is covered only if its contents constitute a work based on the > +Program (independent of having been made by running the Program). > +Whether that is true depends on what the Program does. > + > + 1. You may copy and distribute verbatim copies of the Program's > +source code as you receive it, in any medium, provided that you > +conspicuously and appropriately publish on each copy an appropriate > +copyright notice and disclaimer of warranty; keep intact all the > +notices that refer to this License and to the absence of any warranty; > +and give any other recipients of the Program a copy of this License > +along with the Program. > + > +You may charge a fee for the physical act of transferring a copy, and > +you may at your option offer warranty protection in exchange for a fee. > + > + 2. You may modify your copy or copies of the Program or any portion > +of it, thus forming a work based on the Program, and copy and > +distribute such modifications or work under the terms of Section 1 > +above, provided that you also meet all of these conditions: > + > + a) You must cause the modified files to carry prominent notices > + stating that you changed the files and the date of any change. > + > + b) You must cause any work that you distribute or publish, that in > + whole or in part contains or is derived from the Program or any > + part thereof, to be licensed as a whole at no charge to all third > + parties under the terms of this License. > + > + c) If the modified program normally reads commands interactively > + when run, you must cause it, when started running for such > + interactive use in the most ordinary way, to print or display an > + announcement including an appropriate copyright notice and a > + notice that there is no warranty (or else, saying that you provide > + a warranty) and that users may redistribute the program under > + these conditions, and telling the user how to view a copy of this > + License. (Exception: if the Program itself is interactive but > + does not normally print such an announcement, your work based on > + the Program is not required to print an announcement.) > + > +These requirements apply to the modified work as a whole. If > +identifiable sections of that work are not derived from the Program, > +and can be reasonably considered independent and separate works in > +themselves, then this License, and its terms, do not apply to those > +sections when you distribute them as separate works. But when you > +distribute the same sections as part of a whole which is a work based > +on the Program, the distribution of the whole must be on the terms of > +this License, whose permissions for other licensees extend to the > +entire whole, and thus to each and every part regardless of who wrote it. > + > +Thus, it is not the intent of this section to claim rights or contest > +your rights to work written entirely by you; rather, the intent is to > +exercise the right to control the distribution of derivative or > +collective works based on the Program. > + > +In addition, mere aggregation of another work not based on the Program > +with the Program (or with a work based on the Program) on a volume of > +a storage or distribution medium does not bring the other work under > +the scope of this License. > + > + 3. You may copy and distribute the Program (or a work based on it, > +under Section 2) in object code or executable form under the terms of > +Sections 1 and 2 above provided that you also do one of the following: > + > + a) Accompany it with the complete corresponding machine-readable > + source code, which must be distributed under the terms of Sections > + 1 and 2 above on a medium customarily used for software interchange; > or, > + > + b) Accompany it with a written offer, valid for at least three > + years, to give any third party, for a charge no more than your > + cost of physically performing source distribution, a complete > + machine-readable copy of the corresponding source code, to be > + distributed under the terms of Sections 1 and 2 above on a medium > + customarily used for software interchange; or, > + > + c) Accompany it with the information you received as to the offer > + to distribute corresponding source code. (This alternative is > + allowed only for noncommercial distribution and only if you > + received the program in object code or executable form with such > + an offer, in accord with Subsection b above.) > + > +The source code for a work means the preferred form of the work for > +making modifications to it. For an executable work, complete source > +code means all the source code for all modules it contains, plus any > +associated interface definition files, plus the scripts used to > +control compilation and installation of the executable. However, as a > +special exception, the source code distributed need not include > +anything that is normally distributed (in either source or binary > +form) with the major components (compiler, kernel, and so on) of the > +operating system on which the executable runs, unless that component > +itself accompanies the executable. > + > +If distribution of executable or object code is made by offering > +access to copy from a designated place, then offering equivalent > +access to copy the source code from the same place counts as > +distribution of the source code, even though third parties are not > +compelled to copy the source along with the object code. > + > + 4. You may not copy, modify, sublicense, or distribute the Program > +except as expressly provided under this License. Any attempt > +otherwise to copy, modify, sublicense or distribute the Program is > +void, and will automatically terminate your rights under this License. > +However, parties who have received copies, or rights, from you under > +this License will not have their licenses terminated so long as such > +parties remain in full compliance. > + > + 5. You are not required to accept this License, since you have not > +signed it. However, nothing else grants you permission to modify or > +distribute the Program or its derivative works. These actions are > +prohibited by law if you do not accept this License. Therefore, by > +modifying or distributing the Program (or any work based on the > +Program), you indicate your acceptance of this License to do so, and > +all its terms and conditions for copying, distributing or modifying > +the Program or works based on it. > + > + 6. Each time you redistribute the Program (or any work based on the > +Program), the recipient automatically receives a license from the > +original licensor to copy, distribute or modify the Program subject to > +these terms and conditions. You may not impose any further > +restrictions on the recipients' exercise of the rights granted herein. > +You are not responsible for enforcing compliance by third parties to > +this License. > + > + 7. If, as a consequence of a court judgment or allegation of patent > +infringement or for any other reason (not limited to patent issues), > +conditions are imposed on you (whether by court order, agreement or > +otherwise) that contradict the conditions of this License, they do not > +excuse you from the conditions of this License. If you cannot > +distribute so as to satisfy simultaneously your obligations under this > +License and any other pertinent obligations, then as a consequence you > +may not distribute the Program at all. For example, if a patent > +license would not permit royalty-free redistribution of the Program by > +all those who receive copies directly or indirectly through you, then > +the only way you could satisfy both it and this License would be to > +refrain entirely from distribution of the Program. > + > +If any portion of this section is held invalid or unenforceable under > +any particular circumstance, the balance of the section is intended to > +apply and the section as a whole is intended to apply in other > +circumstances. > + > +It is not the purpose of this section to induce you to infringe any > +patents or other property right claims or to contest validity of any > +such claims; this section has the sole purpose of protecting the > +integrity of the free software distribution system, which is > +implemented by public license practices. Many people have made > +generous contributions to the wide range of software distributed > +through that system in reliance on consistent application of that > +system; it is up to the author/donor to decide if he or she is willing > +to distribute software through any other system and a licensee cannot > +impose that choice. > + > +This section is intended to make thoroughly clear what is believed to > +be a consequence of the rest of this License. > + > + 8. If the distribution and/or use of the Program is restricted in > +certain countries either by patents or by copyrighted interfaces, the > +original copyright holder who places the Program under this License > +may add an explicit geographical distribution limitation excluding > +those countries, so that distribution is permitted only in or among > +countries not thus excluded. In such case, this License incorporates > +the limitation as if written in the body of this License. > + > + 9. The Free Software Foundation may publish revised and/or new versions > +of the General Public License from time to time. Such new versions will > +be similar in spirit to the present version, but may differ in detail to > +address new problems or concerns. > + > +Each version is given a distinguishing version number. If the Program > +specifies a version number of this License which applies to it and "any > +later version", you have the option of following the terms and conditions > +either of that version or of any later version published by the Free > +Software Foundation. If the Program does not specify a version number of > +this License, you may choose any version ever published by the Free > Software > +Foundation. > + > + 10. If you wish to incorporate parts of the Program into other free > +programs whose distribution conditions are different, write to the author > +to ask for permission. For software which is copyrighted by the Free > +Software Foundation, write to the Free Software Foundation; we sometimes > +make exceptions for this. Our decision will be guided by the two goals > +of preserving the free status of all derivatives of our free software and > +of promoting the sharing and reuse of software generally. > + > + NO WARRANTY > + > + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY > +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN > +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES > +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED > +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF > +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS > +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE > +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, > +REPAIR OR CORRECTION. > + > + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN > WRITING > +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR > +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, > +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES > ARISING > +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED > +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY > +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER > +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE > +POSSIBILITY OF SUCH DAMAGES. > + > + END OF TERMS AND CONDITIONS > + > + How to Apply These Terms to Your New Programs > + > + If you develop a new program, and you want it to be of the greatest > +possible use to the public, the best way to achieve this is to make it > +free software which everyone can redistribute and change under these > terms. > + > + To do so, attach the following notices to the program. It is safest > +to attach them to the start of each source file to most effectively > +convey the exclusion of warranty; and each file should have at least > +the "copyright" line and a pointer to where the full notice is found. > + > + <one line to give the program's name and a brief idea of what it > does.> > + Copyright (C) <year> <name of author> > + > + 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; if not, write to the Free Software > + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 > USA > + > + > +Also add information on how to contact you by electronic and paper mail. > + > +If the program is interactive, make it output a short notice like this > +when it starts in an interactive mode: > + > + Gnomovision version 69, Copyright (C) year name of author > + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show > w'. > + This is free software, and you are welcome to redistribute it > + under certain conditions; type `show c' for details. > + > +The hypothetical commands `show w' and `show c' should show the > appropriate > +parts of the General Public License. Of course, the commands you use may > +be called something other than `show w' and `show c'; they could even be > +mouse-clicks or menu items--whatever suits your program. > + > +You should also get your employer (if you work as a programmer) or your > +school, if any, to sign a "copyright disclaimer" for the program, if > +necessary. Here is a sample; alter the names: > + > + Yoyodyne, Inc., hereby disclaims all copyright interest in the program > + `Gnomovision' (which makes passes at compilers) written by James Hacker. > + > + <signature of Ty Coon>, 1 April 1989 > + Ty Coon, President of Vice > + > +This General Public License does not permit incorporating your program > into > +proprietary programs. If your program is a subroutine library, you may > +consider it more useful to permit linking proprietary applications with > the > +library. If this is what you want to do, use the GNU Library General > +Public License instead of this License. > diff -uprN ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/Makefile > ltp-full-20090131/utils/benchmark/ebizzy-0.2/Makefile > --- ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/Makefile > 1969-12-31 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/ebizzy-0.2/Makefile 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,7 @@ > +all: ebizzy > + > +ebizzy: ebizzy.c > + gcc -Wall -Wshadow -lpthread -o ebizzy ebizzy.c > + > +clean: > + rm -f ebizzy *~ > diff -uprN ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/README > ltp-full-20090131/utils/benchmark/ebizzy-0.2/README > --- ltp-full-20090131_orig/utils/benchmark/ebizzy-0.2/README > 1969-12-31 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/ebizzy-0.2/README 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,62 @@ > +ebizzy > +------ > + > +ebizzy is designed to generate a workload resembling common web > +application server workloads. It is highly threaded, has a large > +in-memory working set with low locality, and allocates and deallocates > +memory frequently. When running most efficiently, it will max out the > +CPU. > + > +Compiling > +--------- > + > +First configure ebizzy for your platform by typing "./configure". > +Currently Linux and Solaris anre supported. Then type "make". The > +resulting binary will be named "ebizzy". > + > +Running > +------- > + > +ebizzy does not require any command line arguments. To get > +results, just run it: > + > +$ ./ebizzy > +2569 records/s > +real 10.00 s > +user 2.74 s > +sys 7.24 s > + > +The records per second rate should be as high as possible, and the > +system time as low as possible. Play with the various options to try > +to increase this time to see where overhead is coming from. Note that > +the default number of threads is 2 per number of cpus. > + > +An interesting part of this app is difference between memory > +allocation using the "always mmap" and "never mmap" flags. -m is > +"always mmap" and -M is "never mmap": > + > +$ ./ebizzy -M > +3997 records/s > +real 10.00 s > +user 3.70 s > +sys 5.65 s > +$ ./ebizzy -m > +2577 records/s > +real 10.00 s > +user 2.40 s > +sys 7.43 s > + > +The output of the above two commands should be quite different. > + > +ebizzy has many command line arguments. To get a list of them and > +their descriptions, type: > + > +$ ./ebizzy -? > + > +Support > +------- > + > +There is none. However, you can try emailing the author with > +questions and suggestions. > + > +Val Henson <[email protected]> > diff -uprN ltp-full-20090131_orig/utils/benchmark/Makefile > ltp-full-20090131/utils/benchmark/Makefile > --- ltp-full-20090131_orig/utils/benchmark/Makefile 1969-12-31 > 18:00:00.000000000 -0600 > +++ ltp-full-20090131/utils/benchmark/Makefile 2009-02-27 > 17:01:11.000000000 -0600 > @@ -0,0 +1,32 @@ > +################################################################################ > +## > ## > +## Copyright (c) International Business Machines Corp., 2008 > ## > +## > ## > +## 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; if not, write to the Free Software > ## > +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > ## > +## > ## > +################################################################################ > + > +SUBDIRS := ebizzy-0.2 > + > +configure: > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done; > + > +all: configure > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done; > + > +install: > + > +clean: > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done; > diff -uprN ltp-full-20090131_orig/utils/Makefile > ltp-full-20090131/utils/Makefile > --- ltp-full-20090131_orig/utils/Makefile 1969-12-31 18:00:00.000000000 > -0600 > +++ ltp-full-20090131/utils/Makefile 2009-02-27 17:01:11.000000000 > -0600 > @@ -0,0 +1,32 @@ > +################################################################################ > +## > ## > +## Copyright (c) International Business Machines Corp., 2008 > ## > +## > ## > +## 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; if not, write to the Free Software > ## > +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > ## > +## > ## > +################################################################################ > + > +SUBDIRS := benchmark > + > +configure: > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done; > + > +all: configure > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done; > + > +install: > + > +clean: > + @set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done; > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise > -Strategies to boost innovation and cut costs with open source participation > -Receive a $600 discount off the registration fee with the source code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Ltp-list mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ltp-list ------------------------------------------------------------------------------ Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
