login
Header Space

 
 

Re: Optimizing "make release"

Previous thread: Memory issues:-( by vinoth on Saturday, September 22, 2007 - 1:04 am. (7 messages)

Next thread: Optimal Apache22 configuration by Marcio Cicero on Wednesday, November 21, 2007 - 2:49 pm. (8 messages)
To: <freebsd-performance@...>
Date: Friday, July 4, 2008 - 12:13 pm

hi,

I did some testing an a supermicro 2 x 4 core xeon server under 64bit
"7.0-STABLE #1: Fri Jul  4". when we first tested the system under load
(2000 apache threads) the system performed bad compare to other dual
core systems under the same workload.

the 8 core system had 0% idle time and almost 100% system load. I could
not find out what the load was. disk IO was close to zero during that time.

because of that I checked the sysbench results with this test:

sysbench --test=oltp --mysql-socket=/tmp/mysql.sock --mysql-user=root \
 --max-requests=0 --max-time=60 --oltp-read -only=on --num-threads=$1 run

here are the sysbench results:

- 1 thread --------------------------------------------------------
OLTP test statistics:
    queries performed:
        read:                            354774
        write:                           0
        other:                           50682
        total:                           405456
    transactions:                        25341  (422.34 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 354774 (5912.82 per sec.)
    other operations:                    50682  (844.69 per sec.)

- 8 threads -------------------------------------------------------
OLTP test statistics:
    queries performed:
        read:                            145166
        write:                           0
        other:                           20738
        total:                           165904
    transactions:                        10369  (172.75 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 145166 (2418.54 per sec.)
    other operations:                    20738  (345.51 per sec.)
--------------------------------------------------------------------

during the 8 thread test "top" looks like this:
-----------------------------------------------------------------------------
last pid: 30104;  load averages:  2....
To: FreeBSD Arch <arch@...>, <freebsd-performance@...>
Cc: Joseph Koshy <jkoshy@...>
Date: Sunday, November 23, 2008 - 9:02 am

pmcannotate is a tool that prints out sources of a tool (in C or
assembly) with inlined profiling informations retrieved by a prior
pmcstat analysis.
If compared with things like callgraph generation, it prints out
profiling on a per-instance basis and this can be useful to find, for
example, badly handled caches, too high latency instructions, etc.

The tool usage is pretty simple:
pmcannotate [-a] [-h] [-k path] [-l level] samples.out binaryobj

where samples.out is a pmcstat raw output and binaryobj is the binary
object that has been profiled and is accessible for (ELF) symbols
retrieving.
The options are better described in manpages but briefly:
- a: performs analysis on the assembly rather than the C source
- h: usage and informations
- k: specify a path for the kernel in order to locate correct objects for it
- l: specify a lower boundary (in total percentage time) after which
functions will be displayed nomore.

A typical usage of pmcannotate can be some way of kernel annotation.
For example, you can follow the steps below:
1) Generate a pmc raw output of system samples:
# pmcstat -S ipm-unhalted-core-cycles -O samples.out
2) Copy the samples in the kernel building dir and cd there
# cp samples.out /usr/src/sys/i386/compile/GENERIC/ ; cd
/usr/src/sys/i386/compile/GENERIC/
3) Run pmcannotate
# pmcannotate -k . samples.out kernel.debug &gt; kernel.ann

In the example above please note that kernel.debug has to be used in
order to produce a C annotated source. This happens because in order
to get the binary sources we rely on the "objdump -S" command which
wants binary compiled with debugging options.
If not debugging options are present assembly analynsis is still
possible, but no C-backed one will be available.
objdump is not the only one tool on which pmcannotare rely. Infact, in
order to have it working, pmcstat needs to be present too because we
need to retrieve, from the pmcstat raw output, informations about the
sampled PCs (in particular the name of the function t...
To: <freebsd-performance@...>
Date: Monday, September 24, 2007 - 7:34 am

Hi!

In an effort to run benchmarks on the latest CURRENT on a couple of 
slave machines, I need to build the distribution sets necessary for an 
NFS install as fast as possible (the slaves are installing over PXE), 
but still ending up with something as close as possible to a normal 
default installation on the slaves.

Right now, I'm doing a very basic run to create the distribution sets 
(using a default make.conf and a 6.2-STABLE build machine):

# /cd /usr/src
# csup /etc/current-supfile
# make buildworld
# cd /release
# make release BUILDNAME=CURRENT-YYYYMMDDHHMMSS CVSROOT=/home/ncvs 
CHROOTDIR=/home/chroot

Using the above commands, a lot of stuff gets compiled unnecessarily, 
and the process takes 5-6 hours on a 2GHz P4. I'd like to cut that to 2 
hours max. I tried to use some of the NO_* settings in make.conf, but 
it's not clear to me what I can omit. Some things are needed later in 
make release (e.g. NO_CXX) even though I don't need a C++ compiler on 
the slave systems. I also looked a ccache, but I consider it somewhat 
dangerous, since I need to have an absolutely correct, reproducible 
installation rather than a fast build.

If I ignore documentation distfiles (will this affect benchmarks in any 
way?), AFAICT the only distribution sets I need are base, proflibs, 
kernels and (maybe) lib32. Is there a way to get "make release" to do 
just that? I'm open to other suggestions, of course.

Thanks,
Erik
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: <freebsd-performance@...>
Date: Tuesday, November 6, 2007 - 8:28 am

Hello!

I've the problem that sometimes there are many disk waiting processes
(sysctl -n vm.vmtotal), but systat -vmstat shows da0 and da1 busy with
0-10%.

I guess that the disk i/o is at about 100%, but wondering why I see
those strange values.

System Information:

- Disks are attached to 07:01.0 RAID bus controller: 3ware Inc 9550SX SATA-=
RAID

u0216# uname -a                                                            =
    =20
FreeBSD u0216.nshq.netstream.com 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Wed Oc=
t 31 14:53:00 CET 2007 root@u0216.nshq.netstream.com:/usr/obj/usr/src/sys/S=
MPPAEQUOTA  i386

=3D&gt; kernel contains 3ware patches from CVS, marked for inclusion in 6.3,
   because we've seen many times a freeze on that system before

- Disks are 10k rpm sata disks.
- Board is a Supermicro X7DB8, processor is a quad core Xeon, E5345@2.33GHz.

Anyone an idea,
   a) why systat -vmstat shows so small busy values?
   b) how to debug it further?

Sincerly

Nico

--=20
Think about Free and Open Source Software (FOSS).
http://nico.schottelius.org/documentations/foss/the-term-foss/

PGP: BFE4 C736 ABE5 406F 8F42  F7CF B8BE F92A 9885 188C
To: Attilio Rao <attilio@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Tuesday, November 25, 2008 - 6:57 pm

At Sun, 23 Nov 2008 14:02:22 +0100,
Hi,

First of all, this is excellent work. As soon as this and some other
changes in PMC hit 7.x I'll be rolling this out to all the developers
I work with.  I've tested this on amd64 on HEAD, and with the changes
we have talked about privately (%jx vs. %x) it works quite well.

Secondly, I would like to request a feature.  I would like to be able
to get output in a more easily parsable format so I can write some
Emacs code to highlight C code with the output.  I'd like something
along the lines of:

path:function:line:percentage

Keep up the good work!

Later,
George
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Attilio Rao <attilio@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Sunday, November 23, 2008 - 4:26 pm

I know I am going to really show my FreeBSD ignorance here, but this is a
patch of FreeBSD 8.0 Current isn't it ?

Thanks

Ray Kinsella

_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Ray Kinsella <raykinsella78@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Sunday, November 23, 2008 - 7:47 pm

Yes, it is for 8.0.
Is it giving you problems?

Thanks,
Attilio


-- 
Peace can only be achieved by understanding - A. Einstein
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Attilio Rao <attilio@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Monday, November 24, 2008 - 4:48 am

No, not at all.
I am using 6.2 and 7.0 at the moment, I will build another disk with FreeBSD
8.0-CURRENT.

Thanks

Ray Kinsella


_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Attilio Rao <attilio@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Sunday, November 23, 2008 - 3:56 pm

Quoting Attilio Rao &lt;attilio@freebsd.org&gt; (from Sun, 23 Nov 2008  

Can this also be used to do some code coverage analysis? What I'm  
interested in is to enable something, run some tests in userland,  
disable this something, and then run a tool which tells me which parts  
of specific functions where run or not.

At first I hoped I can use dtrace for this... I had a dtrace training  
and seen the userland probes in action, where you can trace every ASM  
instruction, but unfortunately you can not do this with kernel probes.  
I tried with fbt and syscall on a Solaris 10 machine. I haven't tested  
with FreeBSD-dtrace yet, but I doubt it is more advanced in this  
regard than the Solaris dtrace. So I'm still searching.

Bye,
Alexander.

-- 
We should keep the Panama Canal.  After all, we stole it fair and square.
		-- S. I. Hayakawa

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Alexander Leidinger <Alexander@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Sunday, November 23, 2008 - 7:46 pm

Yes, this is exactly what it does.
You can see traces for any sampled PC and so get a profiling anslysis
on a per-instance basis.

Thanks,
Attilio


-- 
Peace can only be achieved by understanding - A. Einstein
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Attilio Rao <attilio@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Monday, November 24, 2008 - 3:39 am

Quoting Attilio Rao &lt;attilio@freebsd.org&gt; (from Mon, 24 Nov 2008  

Cool. Would be great if you could provide some example in the man page  
or as a script which shows how to do this for kernel code. This would  
immediately show us how good our regression tests are for their  
specific areas of test.

Bye,
Alexander.

-- 
In a family recipe you just discovered in an old book,
the most vital measurement will be illegible.

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Attilio Rao <attilio@...>
Cc: Joseph Koshy <jkoshy@...>, Alexander Leidinger <Alexander@...>, <freebsd-performance@...>, FreeBSD Arch <arch@...>
Date: Sunday, November 23, 2008 - 7:50 pm

I would add that it is only sampled so you don't see every instruction 
executed.  You can use gcov for that however.  That's precisely what it's 
for.

Thanks,
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Jeff Roberson <jroberson@...>
Cc: Attilio Rao <attilio@...>, FreeBSD Arch <arch@...>, <freebsd-performance@...>, Joseph Koshy <jkoshy@...>
Date: Monday, November 24, 2008 - 3:40 am

Quoting Jeff Roberson &lt;jroberson@jroberson.net&gt; (from Sun, 23 Nov 2008  

How to use gcov for the kernel?

Bye,
Alexander.

-- 
If only you knew she loved you, you could
face the uncertainty of whether you love her.

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Attilio Rao <attilio@...>
Cc: FreeBSD Arch <arch@...>, <freebsd-performance@...>
Date: Sunday, November 23, 2008 - 9:44 am

Are you  "rookie" on IRC, who used to catch me with tons of questions

The pmcstat changes seem fine.

Koshy
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: <rabing@...>
Cc: <freebsd-performance@...>
Date: Friday, July 4, 2008 - 2:25 pm

See my tuning notes at:


In my tests mysql 5.1 has much worse performance than 5.0.

Kris

_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Kris Kennaway <kris@...>
Cc: <freebsd-performance@...>
Date: Monday, July 7, 2008 - 4:44 am

hi kris,

thanks for your response. going back to mysql-5.0.51a the 8core server
performed as expected. (sysbench oltp: 4335 with 8 threads)



thanks,
lutz
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Nico -telmich- Schottelius <nico-freebsd-performance@...>
Cc: <freebsd-performance@...>
Date: Tuesday, November 6, 2007 - 1:54 pm

On 11/6/07, Nico -telmich- Schottelius &lt;



I woudn't worry about how many are sleeping. But, How long they sleep would
be interesting data.




Why do you think it should be 100%? Are you running any disk I/O intense
application?



You can try experimenting  with diffrent I/O loads to make sure that there
is a problem before start debugging it.


-Manjunath
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Manjunath R Gowda <mgowda82@...>
Cc: <freebsd-performance@...>
Date: Tuesday, November 6, 2007 - 3:33 pm

And also why they sleep. Having about 700 processes in sleep state plus
400 processes in diskwait state makes me wonder somehow.

There are also some processes from cron, which are older and also in

Because it's the well known bottleneck in that server:

- it has 4 cpus, which are about 30-50% idle
- it has 4 GiB ram, of which 2GiB is mostly inactive
- it has 4 10k rpm hds in 2 raid1 disk arrays, one for
  the mailboxes + root and one for the qmail-queue

Normally systat -vmstat shows 80-100% busy state on the disk arrays,
but currently it's at about 10%, which cannot be right.

I think I'll have a look closer look at the patch we used from CVS to patch=
 the

There is a big problem, that even results in taking about 30 seconds
until the '220' messages comes from qmail when connecting via telnet
=66rom outside to it.

To summarise, what runs on the server:

- qmail + patches =3D&gt; has /var/qmail/queue on it's own disk-array
- courier imapd
- vpopmail (pop3 auth)
- mysql (needed by vpopmail)
- clamd
- spamassassin
- Webmail (horde on apache)

So it's mainly a customer mailserver, with nothing special installed,
which may have some load, but not in the way it's not explainable.

So I'm still hoping somebody with similar problems reads this mail ;-)

Sincerly

Nico

--=20
Think about Free and Open Source Software (FOSS).
http://nico.schottelius.org/documentations/foss/the-term-foss/

PGP: BFE4 C736 ABE5 406F 8F42  F7CF B8BE F92A 9885 188C
To: Nico -telmich- Schottelius <nico-freebsd-performance@...>
Cc: <freebsd-performance@...>
Date: Tuesday, November 6, 2007 - 8:10 pm

On 11/6/07, Nico -telmich- Schottelius &lt;



At a given time only few can run,  remaining once will sleep which is an
expected behavior.





Looks like your blaming the twa driver  based on your experience. OS is a
complex piece of software and involves many components, scheduler, vm,
scsi-stack, driver, problem could be any where in this. That's why specific
data would be useful. Something like on 6.2 running x takes y and on



Your adding one more variable, network here. Verify that  when you did
cvsup the network driver  was not updated.

_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Erik Cederstrand <erik@...>
Cc: <freebsd-performance@...>
Date: Monday, September 24, 2007 - 10:47 am

To just create a working image you can just do:

make buildworld
make buildkernel
make DESTDIR=3D/target/directory installworld
make DESTDIR=3D/target/directory distribution
make DESTDIR=3D/target/directory installkernel

-- Brooks
To: <freebsd-performance@...>
Date: Tuesday, September 25, 2007 - 2:59 am

This doesn't seem to create the distribution sets I want. It just 
creates the hierarchy of files which are eventually going to be on the 
hard-disk on the clients. I may be wrong, but it seems that to be able 
to use sysinstall to install the clients, I need to create distribution 
sets like the ones supplied here:

ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/6.2-RELEASE/

Erik
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Erik Cederstrand <erik@...>
Cc: <freebsd-performance@...>
Date: Tuesday, September 25, 2007 - 11:19 am

Ah, I didn't realized you wanted to do that.  If you do want to use sysinst=
all,
then you do indeed to use make release.  The various NO* options documented=
 in
the release(7) manpage and the makefile should be useful here.

That said, I can't imagine why you'd want sysinstall to be involved in
a automated benchmark system.  Doing what it does using a hand rolled
script is way easier then trying work with it.

-- Brooks
To: <freebsd-performance@...>
Date: Tuesday, September 25, 2007 - 3:05 pm

Ok, so are you suggesting something like this?:

1. make world, distribution, kernel
2. make any necessary changes to config files
3. cram the result onto a custom mfs (or make it available somewhere)
4. boot using the custom mfs as root device
5. point init_path in loader.conf to my own script which:
  5a. prepares (bsdlabel, newfs etc.) the hard-disk
  5b. mounts the hard-disk and copies the distribution files over
5. reboot
6. install any necessary packages
7. run benchmarks

Erik
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
To: Erik Cederstrand <erik@...>
Cc: <freebsd-performance@...>
Date: Tuesday, September 25, 2007 - 9:01 pm

It would probably be easier if you just NFS booted into a small FreeBSD 
installation, and then had a script that set up the drive, and ran an 
installworld/kernel/etc against it.  No need to use mfs I don't think.

This kind of sounds like the automated performance measurement project 
that has been mentioned here (or was it -current?) a few times, once 
somewhat recently.

Eric


_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"
Previous thread: Memory issues:-( by vinoth on Saturday, September 22, 2007 - 1:04 am. (7 messages)

Next thread: Optimal Apache22 configuration by Marcio Cicero on Wednesday, November 21, 2007 - 2:49 pm. (8 messages)
speck-geostationary