Re: build failures after stdlib update

2010-03-22 Thread Dimitry Andric

On 2010-03-21 22:20, Garrett Cooper wrote:

 From gcc(1):

   -s  Remove all symbol table and relocation information from the exe-
   cutable.

This is more or less the same as running strip(1) over the produced
executables.  Usually one uses it for non-debug builds.


That seems a bit harsh (especially because that makes certain
libraries uses kind of moot, like *_p.a, right?).


No, since -s only applies to the linking stage, so for executables or
shared libraries.  It does not apply to object files or libraries.

It could be argued that -s really belongs in LDFLAGS... :)
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: build failures after stdlib update

2010-03-22 Thread Andriy Gapon
on 22/03/2010 00:12 Alexander Best said the following:
 Andriy Gapon schrieb am 2010-03-21:
 on 21/03/2010 23:11 Alexander Best said the following:
 *hehe* that makes more sense. well i already sent you lp.
 unfortunately str is
 not available to gdb:
 
 (gdb) print str
 Variable str is not available.
 
 In cases like this sometimes the argument is still available for
 examination as
 a variable further down the stack (i.e. in one of the calling
 functions).
 
 hmmm...
 
 str might be -m then, because of:
 
 #1  0x00416782 in concat (first=0x417618 -m) at
 /usr/src/gnu/usr.bin/cc/libiberty/../../../../contrib/gcclibs/libiberty/concat.c:76
 

Perhaps, but doesn't look like it.
Could you please do 'print *lp'?

-- 
Andriy Gapon
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [head tinderbox] failure on i386/i386

2010-03-22 Thread Andriy Gapon
on 21/03/2010 08:25 Garrett Cooper said the following:
 On Sat, Mar 20, 2010 at 9:58 PM, FreeBSD Tinderbox
 tinder...@freebsd.org wrote:
 TB --- 2010-03-21 04:53:25 - /usr/bin/make -B buildkernel KERNCONF=PAE
 Kernel build for PAE started on Sun Mar 21 04:53:25 UTC 2010
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
 [...]
 cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
 -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline 
 -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. 
 -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS 
 -include opt_global.h -fno-common -finline-limit=8000 --param 
 inline-unit-growth=100 --param large-function-growth=1000  
 -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow 
 -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  
 /src/sys/libkern/qdivrem.c
 cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
 -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline 
 -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. 
 -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS 
 -include opt_global.h -fno-common -finline-limit=8000 --param 
 inline-unit-growth=100 --param large-function-growth=1000  
 -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow 
 -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  
 /src/sys/libkern/ucmpdi2.c
 cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
 -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline 
 -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. 
 -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS 
 -include opt_global.h -fno-common -finline-limit=8000 --param 
 inline-unit-growth=100 --param large-function-growth=1000  
 -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow 
 -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  
 /src/sys/libkern/udivdi3.c
 cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
 -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline 
 -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. 
 -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS 
 -include opt_global.h -fno-common -finline-limit=8000 --param 
 inline-unit-growth=100 --param large-function-growth=1000  
 -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow 
 -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  
 /src/sys/libkern/umoddi3.c
 cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
 -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline 
 -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. 
 -I/src/sys -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS 
 -include opt_global.h -fno-common -finline-limit=8000 --param 
 inline-unit-growth=100 --param large-function-growth=1000  
 -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow 
 -mno-sse -mno-sse2 -mno-sse3 -ffreestanding -fstack-protector -Werror  
 /src/sys/compat/x86bios/x86bios.c
 cc1: warnings being treated as errors
 /src/sys/compat/x86bios/x86bios.c: In function 'x86bios_map_mem':
 /src/sys/compat/x86bios/x86bios.c:558: warning: cast to pointer from integer 
 of different size
 *** Error code 1

 Stop in /obj/i386/src/sys/PAE.
 *** Error code 1

 Stop in /src.
 *** Error code 1

 Stop in /src.
 TB --- 2010-03-21 04:58:08 - WARNING: /usr/bin/make returned exit code  1
 TB --- 2010-03-21 04:58:08 - ERROR: failed to build PAE kernel
 TB --- 2010-03-21 04:58:08 - 5080.43 user 936.95 system 6788.14 real
 
 Hi Jung,
 Could you please resolve this error?
 Thanks,

It would have been nice to actually CC Jung-uk :-)
The problem seems to be that with PAE type of x86bios_rom_phys, vm_paddr_t, is
64-bit.
I am not sure what values x86bios_rom_phys can have, but most likely it can be
simply cast to a 32-bit value.

-- 
Andriy Gapon
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Poul-Henning Kamp
In message 4ba633a0.2090...@icyb.net.ua, Andriy Gapon writes:
on 21/03/2010 16:05 Alexander Motin said the following:
 Ivan Voras wrote:
 Hmm, it looks like it could be easy to spawn more g_* threads (and,
 barring specific class behaviour, it has a fair chance of working out of
 the box) but the incoming queue will need to also be broken up for
 greater effect.
 
 According to notes, looks there is a good chance to obtain races, as
 some places expect only one up and one down thread.

I haven't given any deep thought to this issue, but I remember us discussing
them over beer :-)

The easiest way to obtain more parallelism, is to divide the mesh into
multiple independent meshes.

This will do you no good if you have five disks in a RAID-5 config, but
if you have two disks each mounted on its own filesystem, you can run
a g_up  g_down for each of them.

-- 
Poul-Henning Kamp   | UNIX since Zilog Zeus 3.20
p...@freebsd.org | TCP/IP since RFC 956
FreeBSD committer   | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: build failures after stdlib update

2010-03-22 Thread Alexander Best
Andriy Gapon schrieb am 2010-03-22:
 on 22/03/2010 00:12 Alexander Best said the following:
  Andriy Gapon schrieb am 2010-03-21:
  on 21/03/2010 23:11 Alexander Best said the following:
  *hehe* that makes more sense. well i already sent you lp.
  unfortunately str is
  not available to gdb:

  (gdb) print str
  Variable str is not available.

  In cases like this sometimes the argument is still available for
  examination as
  a variable further down the stack (i.e. in one of the calling
  functions).

  hmmm...

  str might be -m then, because of:

  #1  0x00416782 in concat (first=0x417618 -m) at
  /usr/src/gnu/usr.bin/cc/libiberty/../../../../contrib/gcclibs/libiberty/concat.c:76


 Perhaps, but doesn't look like it.
 Could you please do 'print *lp'?

(gdb) print *lp
Cannot access memory at address 0xc092f0

-- 
Alexander Best
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Gary Jennejohn
On Sun, 21 Mar 2010 19:03:56 +0200
Alexander Motin m...@freebsd.org wrote:

 Scott Long wrote:
  Are there non-CAM drivers that look at MAXPHYS, or that silently assume that
  MAXPHYS will never be more than 128k?
 
 That is a question.
 

I only did a quickdirty grep looking for MAXPHYS in /sys.

Some drivers redefine MAXPHYS to be 512KiB.  Some use their own local
MAXPHYS which is usually 128KiB.

Some look at MAXPHYS to figure out other things; the details escape me.

There's one driver which actually uses 100*MAXPHYS for something, but I
didn't check the details.

Lots of them were non-CAM drivers AFAICT.

--
Gary Jennejohn
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: csup/svn/ldd make host unresponsive [WAS: Re: ldd leaves the machine unresponsive]

2010-03-22 Thread jhell


On Sun, 21 Mar 2010 14:22, Anton Shterenlikht wrote:
In Message-Id: 20100321182214.gk84...@mech-cluster241.men.bris.ac.uk


On Sat, Mar 20, 2010 at 08:53:37PM +, Anton Shterenlikht wrote:

On Sat, Mar 20, 2010 at 03:44:46PM +, Anton Shterenlikht wrote:

On Sat, Mar 20, 2010 at 07:27:43AM -0400, jhell wrote:


On Fri, 19 Mar 2010 17:15, Anton Shterenlikht wrote:
In Message-Id: 20100319211535.ga76...@mech-cluster241.men.bris.ac.uk


On Thu, Mar 18, 2010 at 11:29:36AM -0400, jhell wrote:

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1



On Wed, 17 Mar 2010 12:32, Anton Shterenlikht wrote:
In Message-Id: 20100317163230.gj87...@mech-cluster241.men.bris.ac.uk


Just updated to ia64 r205248

If my problem is due to my mis-configuration,
I apologise in advance.

I run this shell script after each upgrade
and 'make delete-old-libs' to check
if any shared objects need to be rebuilt:

start script

#!/bin/sh

for file in `find /bin /sbin /usr/bin /usr/sbin /usr/lib /usr/libexec /usr/local -name 
*`
do
   echo $file
   ldd $file  /root/ldd_results 2 /dev/zero
done

end script



This will probably do closer to what you actually would want to look for.

Writing to /dev/zero ... I don't know never tried it since /dev/null is
usually the standard place to throw trash.

#!/bin/sh
for file in `find /*bin /usr/*bin /usr/lib* /usr/local/*bin -type f` do
echo $file
ldd $file /root/ldd_results 2/dev/null
done

The problem with your script is that it finds most files that it can not
or is not useful to run ldd on and leaves you junk in return.

It might be more useful if you searched for dynamically linked ELF
binaries to run ldd against like the following.

=== Script starts here ===
#!/bin/sh

SEARCHPATH=/*bin /usr/*bin /usr/lib* /usr/local/*bin

trap 'exit 1' 2

check_libs() {
for spath in $SEARCHPATH; do
 for ifelf in `find $spath -type f`; do
 ldd `file $ifelf | grep dynamically | cut -f1 -d:`
 done
done
}

check_libs 2/dev/null
=== Script ends here ===

The above will find all type ELF * that are dynamically linked within the
SEARCHPATH variable and run ldd on them and print the results to stdout.

Obviously since you are going to have thousands of files being questioned,
stdout is not going to be useful.

So with the about stated:
save the script to: checklibs.sh
run with: sh checklibs.sh /root/checklibs_output
or: script /root/checklibs_output checklibs.sh


After the upgrade to r205248, the script
freezes at seemingly random points.



Unneeded disk usage  execution.


I can still ssh to the machine (using keys), i.e.
I see the welcome message, but cannot get to the console prompt.


Of course... to many open files or processes in wait. SSH already has the
information it needs loaded into memory, that's why you can get sort-of-in

ZFS file-system perhaps ?


I've no ZFS.

I'm seeing very similar behaviour now with csup:

( I do csup -L2 /root/ports-supfile, where

# cat /root/ports-supfile
*default host=cvsup.uk.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=. delete use-rel-suffix compress

ports-all
# )

top(1) shows:

last pid:  1160;  load averages:  0.00,  0.06,  0.07
   up 0+00:10:53  15:05:52
81 processes:  3 running, 61 sleeping, 17 waiting
CPU 0:  0.0% user,  0.0% nice,  0.2% system,  0.0% interrupt, 99.8% idle
CPU 1:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 23M Active, 19M Inact, 75M Wired, 136K Cache, 34M Buf, 5900M Free
Swap: 2780M Total, 2780M Free

 PIDUIDTHR PRI NICE   SIZERES STATE   C   TIME   WCPU COMMAND
  10  0  2 171 ki31 0K64K RUN 0  20:18 198.00% idle
  11  0 17 -48- 0K   544K WAIT0   0:01  0.00% intr
1118   1001  1  960 12800K  3920K CPU00   0:00  0.00% top
   4  0  1  -8- 0K32K -   1   0:00  0.00% g_down
1158  0  4  -80 43672K  6296K biowr   0   0:00  0.00% csup


which stays in biowr state indefinitely.

I can issue kill -9 or kill -HUP from top(1),
which makes csup change state to STOP, but
nothing else happens.

As before, I can't log in from other terminals
and have to do a cold reset. I've reinstalled
on another disk, so not sure what's going on.

I think rm(1) is also extremely slow, but
maybe I'm imagining things.

many thanks
anton





I would post up the contents of your make.conf  your kernel config  your
dmesg somewhere so it can be evaluated.


When I reinstalled 8.0 from a CD,
I updated source with csup, that worked.
However, after upgrading to current, I can't get
any luck with csup. The important bit is that
I don't really know what revision this is.

I've no /etc/make.conf

kernel config:
http://seis.bris.ac.uk/~mexas/freebsd/ia64/rx2600/uzi/UZI

dmesg:
http://seis.bris.ac.uk/~mexas/freebsd/ia64/rx2600/uzi/dmesg.boot



Marcel, this might be of some interest.

I 

[head tinderbox] failure on i386/i386

2010-03-22 Thread FreeBSD Tinderbox
TB --- 2010-03-22 10:55:00 - tinderbox 2.6 running on freebsd-current.sentex.ca
TB --- 2010-03-22 10:55:00 - starting HEAD tinderbox run for i386/i386
TB --- 2010-03-22 10:55:00 - cleaning the object tree
TB --- 2010-03-22 10:55:21 - cvsupping the source tree
TB --- 2010-03-22 10:55:21 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca 
/tinderbox/HEAD/i386/i386/supfile
TB --- 2010-03-22 10:57:06 - building world
TB --- 2010-03-22 10:57:06 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-03-22 10:57:06 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-03-22 10:57:06 - TARGET=i386
TB --- 2010-03-22 10:57:06 - TARGET_ARCH=i386
TB --- 2010-03-22 10:57:06 - TZ=UTC
TB --- 2010-03-22 10:57:06 - __MAKE_CONF=/dev/null
TB --- 2010-03-22 10:57:06 - cd /src
TB --- 2010-03-22 10:57:06 - /usr/bin/make -B buildworld
 World build started on Mon Mar 22 10:57:07 UTC 2010
 Rebuilding the temporary build tree
 stage 1.1: legacy release compatibility shims
 stage 1.2: bootstrap tools
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3: cross tools
 stage 4.1: building includes
 stage 4.2: building libraries
 stage 4.3: make dependencies
 stage 4.4: building everything
 World build completed on Mon Mar 22 11:56:20 UTC 2010
TB --- 2010-03-22 11:56:20 - generating LINT kernel config
TB --- 2010-03-22 11:56:20 - cd /src/sys/i386/conf
TB --- 2010-03-22 11:56:20 - /usr/bin/make -B LINT
TB --- 2010-03-22 11:56:20 - building LINT kernel
TB --- 2010-03-22 11:56:20 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-03-22 11:56:20 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-03-22 11:56:20 - TARGET=i386
TB --- 2010-03-22 11:56:20 - TARGET_ARCH=i386
TB --- 2010-03-22 11:56:20 - TZ=UTC
TB --- 2010-03-22 11:56:20 - __MAKE_CONF=/dev/null
TB --- 2010-03-22 11:56:20 - cd /src
TB --- 2010-03-22 11:56:20 - /usr/bin/make -B buildkernel KERNCONF=LINT
 Kernel build for LINT started on Mon Mar 22 11:56:20 UTC 2010
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
 Kernel build for LINT completed on Mon Mar 22 12:21:18 UTC 2010
TB --- 2010-03-22 12:21:18 - building GENERIC kernel
TB --- 2010-03-22 12:21:18 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-03-22 12:21:18 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-03-22 12:21:18 - TARGET=i386
TB --- 2010-03-22 12:21:18 - TARGET_ARCH=i386
TB --- 2010-03-22 12:21:18 - TZ=UTC
TB --- 2010-03-22 12:21:18 - __MAKE_CONF=/dev/null
TB --- 2010-03-22 12:21:18 - cd /src
TB --- 2010-03-22 12:21:18 - /usr/bin/make -B buildkernel KERNCONF=GENERIC
 Kernel build for GENERIC started on Mon Mar 22 12:21:18 UTC 2010
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
 Kernel build for GENERIC completed on Mon Mar 22 12:40:30 UTC 2010
TB --- 2010-03-22 12:40:30 - building PAE kernel
TB --- 2010-03-22 12:40:30 - MAKEOBJDIRPREFIX=/obj
TB --- 2010-03-22 12:40:30 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2010-03-22 12:40:30 - TARGET=i386
TB --- 2010-03-22 12:40:30 - TARGET_ARCH=i386
TB --- 2010-03-22 12:40:30 - TZ=UTC
TB --- 2010-03-22 12:40:30 - __MAKE_CONF=/dev/null
TB --- 2010-03-22 12:40:30 - cd /src
TB --- 2010-03-22 12:40:30 - /usr/bin/make -B buildkernel KERNCONF=PAE
 Kernel build for PAE started on Mon Mar 22 12:40:30 UTC 2010
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
[...]
cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
-Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  
-Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys 
-I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include 
opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 
--param large-function-growth=1000  -mno-align-long-strings 
-mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 
-ffreestanding -fstack-protector -Werror  /src/sys/libkern/qdivrem.c
cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
-Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  
-Wundef -Wno-pointer-sign -fformat-extensions -nostdinc  -I. -I/src/sys 
-I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include 
opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 
--param large-function-growth=1000  -mno-align-long-strings 
-mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 
-ffreestanding -fstack-protector -Werror  /src/sys/libkern/ucmpdi2.c
cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs 
-Wstrict-prototypes  -Wmissing-prototypes 

Re: Increasing MAXPHYS

2010-03-22 Thread Alexander Leidinger

Quoting Scott Long sco...@samsco.org (from Sat, 20 Mar 2010 12:17:33 -0600):

code was actually taking advantage of the larger I/O's.  The  
improvement really

depends on the workload, of course, and I wouldn't expect it to be noticeable
for most people unless they're running something like a media server.


I don't think this is limited to media servers, think about situations  
where you process a large amount of data seuqntially... (seuqntial  
access case in a big data-warehouse scenario or a 3D render farm which  
get's the huge amount of data from a shared resource (how many  
render-clients can I support at the same time with my disk  
infrastructure-scenario) or some of the bigtable/nosql stuff which  
seems to be more and more popular at some sites). There are enough  
situations where sequential file access is the key performance metric  
so that I wouldn't say that only media servers depend upon large  
sequential I/O's.


Bye,
Alexander.

--
That's life.
What's life?
A magazine.
How much does it cost?
Two-fifty.
I only have a dollar.
That's life.

http://www.Leidinger.netAlexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org   netchild @ FreeBSD.org  : PGP ID = 72077137
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread John Baldwin
On Monday 22 March 2010 7:40:18 am Gary Jennejohn wrote:
 On Sun, 21 Mar 2010 19:03:56 +0200
 Alexander Motin m...@freebsd.org wrote:
 
  Scott Long wrote:
   Are there non-CAM drivers that look at MAXPHYS, or that silently assume 
that
   MAXPHYS will never be more than 128k?
  
  That is a question.
  
 
 I only did a quickdirty grep looking for MAXPHYS in /sys.
 
 Some drivers redefine MAXPHYS to be 512KiB.  Some use their own local
 MAXPHYS which is usually 128KiB.
 
 Some look at MAXPHYS to figure out other things; the details escape me.
 
 There's one driver which actually uses 100*MAXPHYS for something, but I
 didn't check the details.
 
 Lots of them were non-CAM drivers AFAICT.

The problem is the drivers that _don't_ reference MAXPHYS.  The driver author 
at the time knew that MAXPHYS was 128k, so he did the MAXPHYS-dependent 
calculation and just put the result in the driver (e.g. only supporting up to 
32 segments (32 4k pages == 128k) in a bus dma tag as a magic number to 
bus_dma_tag_create() w/o documenting that the '32' was derived from 128k or 
what the actual hardware limit on nsegments is).  These cannot be found by a 
simple grep, they require manually inspecting each driver.

-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread jhell


On Mon, 22 Mar 2010 01:53, Alexander Motin wrote:
In Message-Id: 4ba705cb.9090...@freebsd.org


jhell wrote:

On Sun, 21 Mar 2010 20:54, jhell@ wrote:

I played with it on one re-compile of a kernel and for the sake of it
DFLTPHYS=128 MAXPHYS=256 and found out that I could not cause a crash
dump to be performed upon request (reboot -d) due to the boundary
being hit for DMA which is 65536. Obviously this would have to be
adjusted in ata-dma.c.

I suppose that there would have to be a better way to get the real
allowable boundary from the running system instead of setting it
statically.

Other then the above I do not see a reason why not... It is HEAD and
this is the type of experimental stuff it was meant for.


I should have also said that I also repeated the above without setting
DFLTPHYS and setting MAXPHYS to 256.


It was bad idea to increase DFLTPHYS. It is not intended to be increased.



I just wanted to see what I could break; when I increased DFLTPHYS it was 
just for that purpose. It booted and everything was running after. Wasn't 
long enough to do any damage.



About DMA boundary, I do not very understand the problem. Yes, legacy
ATA has DMA boundary of 64K, but there is no problem to submit S/G list
of several segments. How long ago have you tried it, on which controller
and which diagnostics do you have?




atap...@pci0:0:31:1:
class=0x01018a card=0x01271028 chip=0x24cb8086 rev=0x01 hdr=0x00
vendor = 'Intel Corporation'
device = '82801DB/DBL (ICH4/ICH4-L) UltraATA/100 EIDE Controller'
class  = mass storage
subclass   = ATA

I do not have any diagnostics but if any are requested I do have the 
kernel's that I have tuned to the above values readily available to run 
again.


The first time I tuned MAXPHYS was roughly about 7 weeks ago. That was 
until I noticed I could not get a crash dump for a problem I was having a 
week later and had to revert back to its default setting of 128. The 
problem I had a week later was unrelated.


Two days ago when I saw this thread I recalled having modified MAXPHYS but 
could not remember the problem it caused so I re-enabled it again to 
reproduce the problem for sureness.


Anything else you need please address,

Regards,

--

 jhell

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Alexander Sack
On Mon, Mar 22, 2010 at 8:39 AM, John Baldwin j...@freebsd.org wrote:
 On Monday 22 March 2010 7:40:18 am Gary Jennejohn wrote:
 On Sun, 21 Mar 2010 19:03:56 +0200
 Alexander Motin m...@freebsd.org wrote:

  Scott Long wrote:
   Are there non-CAM drivers that look at MAXPHYS, or that silently assume
 that
   MAXPHYS will never be more than 128k?
 
  That is a question.
 

 I only did a quickdirty grep looking for MAXPHYS in /sys.

 Some drivers redefine MAXPHYS to be 512KiB.  Some use their own local
 MAXPHYS which is usually 128KiB.

 Some look at MAXPHYS to figure out other things; the details escape me.

 There's one driver which actually uses 100*MAXPHYS for something, but I
 didn't check the details.

 Lots of them were non-CAM drivers AFAICT.

 The problem is the drivers that _don't_ reference MAXPHYS.  The driver author
 at the time knew that MAXPHYS was 128k, so he did the MAXPHYS-dependent
 calculation and just put the result in the driver (e.g. only supporting up to
 32 segments (32 4k pages == 128k) in a bus dma tag as a magic number to
 bus_dma_tag_create() w/o documenting that the '32' was derived from 128k or
 what the actual hardware limit on nsegments is).  These cannot be found by a
 simple grep, they require manually inspecting each driver.

100% awesome comment.  On another kernel, I myself was guilty of this
crime (I did have a nice comment though above the def).

This has been a great thread since our application really needs some
of the optimizations that are being thrown around here.  We have found
in real live performance testing that we are almost always either
controller bound (i.e. adding more disks to spread IOPs has little to
no effect in large array configurations on throughput, we suspect that
is hitting the RAID controller's firmware limitations) or tps bound,
i.e. I never thought going from 128k - 256k per transaction would
have a dramatic effect on throughput (but I never verified).

Back to HBAs,  AFAIK, every modern iteration of the most popular HBAs
can easily do way more than a 128k scatter/gather I/O.  Do you guys
know of any *modern* (circa within the last 3-4 years) that can not do
more than 128k at a shot?

In other words, I've always thought the limit was kernel imposed and
not what the memory controller on the card can do (I certainly never
got the impression talking with some of the IHVs over the years that
they were designing their hardware for a 128k limit - I sure hope
not!).

-aps
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [head tinderbox] failure on i386/i386

2010-03-22 Thread Jung-uk Kim
On Monday 22 March 2010 04:19 am, Andriy Gapon wrote:
 on 21/03/2010 08:25 Garrett Cooper said the following:
  On Sat, Mar 20, 2010 at 9:58 PM, FreeBSD Tinderbox
 
  tinder...@freebsd.org wrote:
  TB --- 2010-03-21 04:53:25 - /usr/bin/make -B buildkernel
  KERNCONF=PAE
 
  Kernel build for PAE started on Sun Mar 21 04:53:25 UTC 2010
  stage 1: configuring the kernel
  stage 2.1: cleaning up the object tree
  stage 2.2: rebuilding the object tree
  stage 2.3: build tools
  stage 3.1: making dependencies
  stage 3.2: building everything
 
  [...]
  cc -c -O -pipe  -std=c99 -g -Wall -Wredundant-decls
  -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
  -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
  -fformat-extensions -nostdinc  -I. -I/src/sys
  -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS
  -include opt_global.h -fno-common -finline-limit=8000 --param
  inline-unit-growth=100 --param large-function-growth=1000 
  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx
  -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
  -fstack-protector -Werror  /src/sys/libkern/qdivrem.c cc -c -O
  -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs
  -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
  -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
  -fformat-extensions -nostdinc  -I. -I/src/sys
  -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS
  -include opt_global.h -fno-common -finline-limit=8000 --param
  inline-unit-growth=100 --param large-function-growth=1000 
  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx
  -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
  -fstack-protector -Werror  /src/sys/libkern/ucmpdi2.c cc -c -O
  -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs
  -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
  -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
  -fformat-extensions -nostdinc  -I. -I/src/sys
  -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS
  -include opt_global.h -fno-common -finline-limit=8000 --param
  inline-unit-growth=100 --param large-function-growth=1000 
  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx
  -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
  -fstack-protector -Werror  /src/sys/libkern/udivdi3.c cc -c -O
  -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs
  -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
  -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
  -fformat-extensions -nostdinc  -I. -I/src/sys
  -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS
  -include opt_global.h -fno-common -finline-limit=8000 --param
  inline-unit-growth=100 --param large-function-growth=1000 
  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx
  -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
  -fstack-protector -Werror  /src/sys/libkern/umoddi3.c cc -c -O
  -pipe  -std=c99 -g -Wall -Wredundant-decls -Wnested-externs
  -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith
  -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
  -fformat-extensions -nostdinc  -I. -I/src/sys
  -I/src/sys/contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS
  -include opt_global.h -fno-common -finline-limit=8000 --param
  inline-unit-growth=100 --param large-function-growth=1000 
  -mno-align-long-strings -mpreferred-stack-boundary=2  -mno-mmx
  -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding
  -fstack-protector -Werror  /src/sys/compat/x86bios/x86bios.c
  cc1: warnings being treated as errors
  /src/sys/compat/x86bios/x86bios.c: In function
  'x86bios_map_mem': /src/sys/compat/x86bios/x86bios.c:558:
  warning: cast to pointer from integer of different size ***
  Error code 1
 
  Stop in /obj/i386/src/sys/PAE.
  *** Error code 1
 
  Stop in /src.
  *** Error code 1
 
  Stop in /src.
  TB --- 2010-03-21 04:58:08 - WARNING: /usr/bin/make returned
  exit code  1 TB --- 2010-03-21 04:58:08 - ERROR: failed to build
  PAE kernel TB --- 2010-03-21 04:58:08 - 5080.43 user 936.95
  system 6788.14 real
 
  Hi Jung,
  Could you please resolve this error?
  Thanks,

 It would have been nice to actually CC Jung-uk :-)
 The problem seems to be that with PAE type of x86bios_rom_phys,
 vm_paddr_t, is 64-bit.
 I am not sure what values x86bios_rom_phys can have, but most
 likely it can be simply cast to a 32-bit value.

Oops, sorry.  It will be fixed soon.  I am testing an i386/PAE kernel 
now.

Jung-uk Kim
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: csup/svn/ldd make host unresponsive [WAS: Re: ldd leaves the machine unresponsive]

2010-03-22 Thread Marcel Moolenaar

On Mar 22, 2010, at 5:04 AM, jhell wrote:
 
 Not that this has anything to do with your problem but might turn into a 
 problem if it is not your intent. But the above command will update your src 
 to 9.0-CURRENT

That is his intend.

Anton: I fixed a bunch of things yesterday. You should be able to
upgrade to HEAD. I have one more fix pending that's needed for
preemption, but you should not hold off an upgrade for that...

FYI,

-- 
Marcel Moolenaar
xcl...@mac.com



___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Scott Long
On Mar 22, 2010, at 9:52 AM, Alexander Sack wrote:
 On Mon, Mar 22, 2010 at 8:39 AM, John Baldwin j...@freebsd.org wrote:
 On Monday 22 March 2010 7:40:18 am Gary Jennejohn wrote:
 On Sun, 21 Mar 2010 19:03:56 +0200
 Alexander Motin m...@freebsd.org wrote:
 
 Scott Long wrote:
 Are there non-CAM drivers that look at MAXPHYS, or that silently assume
 that
 MAXPHYS will never be more than 128k?
 
 That is a question.
 
 
 I only did a quickdirty grep looking for MAXPHYS in /sys.
 
 Some drivers redefine MAXPHYS to be 512KiB.  Some use their own local
 MAXPHYS which is usually 128KiB.
 
 Some look at MAXPHYS to figure out other things; the details escape me.
 
 There's one driver which actually uses 100*MAXPHYS for something, but I
 didn't check the details.
 
 Lots of them were non-CAM drivers AFAICT.
 
 The problem is the drivers that _don't_ reference MAXPHYS.  The driver author
 at the time knew that MAXPHYS was 128k, so he did the MAXPHYS-dependent
 calculation and just put the result in the driver (e.g. only supporting up to
 32 segments (32 4k pages == 128k) in a bus dma tag as a magic number to
 bus_dma_tag_create() w/o documenting that the '32' was derived from 128k or
 what the actual hardware limit on nsegments is).  These cannot be found by a
 simple grep, they require manually inspecting each driver.
 
 100% awesome comment.  On another kernel, I myself was guilty of this
 crime (I did have a nice comment though above the def).
 
 This has been a great thread since our application really needs some
 of the optimizations that are being thrown around here.  We have found
 in real live performance testing that we are almost always either
 controller bound (i.e. adding more disks to spread IOPs has little to
 no effect in large array configurations on throughput, we suspect that
 is hitting the RAID controller's firmware limitations) or tps bound,
 i.e. I never thought going from 128k - 256k per transaction would
 have a dramatic effect on throughput (but I never verified).
 
 Back to HBAs,  AFAIK, every modern iteration of the most popular HBAs
 can easily do way more than a 128k scatter/gather I/O.  Do you guys
 know of any *modern* (circa within the last 3-4 years) that can not do
 more than 128k at a shot?

64K broken in MPT at the moment.  The hardware can do it, the driver thinks it 
can do it, but it fails.  AAC hardware traditionally cannot, but maybe the 
firmware has been improved in the past few years.  I know that there are other 
low-performance devices that can't do more than 64 or 128K, but none are 
coming to mind at the moment.  Still, it shouldn't be a universal assumption 
that all hardware can do big I/O's.

Another consideration is that some hardware can do big I/O's, but not very 
efficiently.  Not all DMA engines are created equal, and moving to compound 
commands and excessively long S/G lists can be a pessimization.  For example, 
MFI hardware does a hinted prefetch on the segment list, but once you exceed a 
certain limit, that prefetch doesn't work anymore and the firmware has to take 
the slow path to execute the i/o.  I haven't quantified this penalty yet, but 
it's something that should be thought about.

 
 In other words, I've always thought the limit was kernel imposed and
 not what the memory controller on the card can do (I certainly never
 got the impression talking with some of the IHVs over the years that
 they were designing their hardware for a 128k limit - I sure hope
 not!).

You'd be surprised at the engineering compromises and handicaps that are 
committed at IHVs because of misguided marketters.

Scott

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


[PATCH] rename COMPAT_FREEBSD32

2010-03-22 Thread David O'Brien
On Mon, Mar 15, 2010 at 09:00:18AM -0700, Julian Elischer wrote:
 I certainly agree.. can it be changed please?

I've waited a while to see what other opinions would be expressed on this
topic.  I believe there is sufficient support to rename COMPAT_FREEBSD32
to something else based on responses in the mailing lists.

I am sorry if some may wish to label this a bikeshead.  But we seem to
have many folks disliking COMPAT_FREEBSD32.


Based on responses to the topic of COMPAT_FREEBSD32, the following
were the suggestions offered:
COMPAT_ARCH32, COMPAT_ARCH_32BIT, COMPAT_32BIT_ARCH, COMPAT_32BIT,
COMPAT_FREEBSD32BIT

I went with the first as it seemed the most direct to me, but I find
all but the last are suitable as well.  (The last is probably too close
to COMPAT_FREEBSDn given we do have other suggestions.)

This patch was produced by checking out a fresh tree and running this
command from the top level:

  wcfind sys -type f | xargs fgrep -l COMPAT_FREEBSD32 | xargs \
  sed -i '' \
  -e 's/COMPAT_FREEBSD32/COMPAT_ARCH32/g' \
  -e 's/compat_freebsd32/compat_arch32/g'
  svn revert -R sys/compat/freebsd32


Thoughts?

-- 
-- David  (obr...@freebsd.org)

Index: conf/options.amd64
===
--- conf/options.amd64  (revision 205451)
+++ conf/options.amd64  (working copy)
@@ -11,7 +11,7 @@ MP_WATCHDOG
 # Options for emulators.  These should only be used at config time, so
 # they are handled like options for static filesystems
 # (see src/sys/conf/options), except for broken debugging options.
-COMPAT_FREEBSD32   opt_compat.h
+COMPAT_ARCH32  opt_compat.h
 #IBCS2 opt_dontuse.h
 #COMPAT_LINUX  opt_dontuse.h
 COMPAT_LINUX32 opt_compat.h
Index: conf/options.ia64
===
--- conf/options.ia64   (revision 205451)
+++ conf/options.ia64   (working copy)
@@ -9,7 +9,7 @@ LOG2_PAGE_SIZE  opt_global.h
 
 UWX_TRACE_ENABLE   opt_global.h
 
-COMPAT_FREEBSD32   opt_compat.h
+COMPAT_ARCH32  opt_compat.h
 
 EXCEPTION_TRACING  opt_xtrace.h
 
Index: conf/files.ia64
===
--- conf/files.ia64 (revision 205451)
+++ conf/files.ia64 (working copy)
@@ -28,11 +28,11 @@ ukbdmap.h   optional
ukbd_dflt_keymap\
no-obj no-implicit-rule before-depend   \
clean   ukbdmap.h
 #
-compat/freebsd32/freebsd32_ioctl.c optionalcompat_freebsd32
-compat/freebsd32/freebsd32_misc.c  optionalcompat_freebsd32
-compat/freebsd32/freebsd32_syscalls.c  optionalcompat_freebsd32
-compat/freebsd32/freebsd32_sysent.coptionalcompat_freebsd32
-compat/ia32/ia32_sysvec.c  optionalcompat_freebsd32
+compat/freebsd32/freebsd32_ioctl.c optionalcompat_arch32
+compat/freebsd32/freebsd32_misc.c  optionalcompat_arch32
+compat/freebsd32/freebsd32_syscalls.c  optionalcompat_arch32
+compat/freebsd32/freebsd32_sysent.coptionalcompat_arch32
+compat/ia32/ia32_sysvec.c  optionalcompat_arch32
 contrib/ia64/libuwx/src/uwx_bstream.c  standard
 contrib/ia64/libuwx/src/uwx_context.c  standard
 contrib/ia64/libuwx/src/uwx_env.c  standard
@@ -68,10 +68,10 @@ ia64/acpica/madt.c  optionalacpi
 ia64/disasm/disasm_decode.cstandard
 ia64/disasm/disasm_extract.c   standard
 ia64/disasm/disasm_format.cstandard
-ia64/ia32/ia32_misc.c  optionalcompat_freebsd32
-ia64/ia32/ia32_reg.c   optionalcompat_freebsd32
-ia64/ia32/ia32_signal.coptionalcompat_freebsd32
-ia64/ia32/ia32_trap.c  optionalcompat_freebsd32
+ia64/ia32/ia32_misc.c  optionalcompat_arch32
+ia64/ia32/ia32_reg.c   optionalcompat_arch32
+ia64/ia32/ia32_signal.coptionalcompat_arch32
+ia64/ia32/ia32_trap.c  optionalcompat_arch32
 ia64/ia64/autoconf.c   standard
 ia64/ia64/bus_machdep.cstandard
 ia64/ia64/busdma_machdep.c standard
@@ -117,7 +117,7 @@ ia64/isa/isa_dma.c  optionalisa
 ia64/pci/pci_cfgreg.c  optionalpci
 isa/syscons_isa.c  optionalsc
 isa/vga_isa.c  optionalvga
-kern/imgact_elf32.coptionalcompat_freebsd32
+kern/imgact_elf32.coptionalcompat_arch32
 libkern/bcmp.c standard
 libkern/ffsl.c standard
 libkern/fls.c  standard
Index: conf/files.amd64
===
--- conf/files.amd64(revision 205451)
+++ conf/files.amd64(working copy)
@@ -227,20 +227,20 @@ kern/link_elf_obj.c   standard
 #
 # IA32 

Re: hang in rpccon from interrupting NFS operations (Re: pointyhat panic)

2010-03-22 Thread Adrenalin
That's strange, after recompiling the lastest 8_0 that contain the patch (
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/rpc/clnt_vc.c.diff?r1=1.8.2.2.2.1;r2=1.8.2.2.2.2)
after 5 days it stuck again with same symptoms, I've also got some in the
nfs state:

FreeBSD .. 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #0: Tue Mar 16 22:56:51 EET
2010 @..:/usr/obj/usr/src/sys/MYGEN  amd64

When attaching the debugger for an rpccon process, It stuck in here
#0  0x00080124051c in stat () from /lib/libc.so.7

http://img705.imageshack.us/img705/741/10032219218.png

Can I do the online debug of the kernel, or how can I can help you to solve
the problem ?
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread M. Warner Losh
In message: d9d66012-16fd-4fb6-ab6a-9a8d17727...@samsco.org
Scott Long sco...@samsco.org writes:
: I'd like to go in the opposite direction.  The queue-dispatch-queue
: model of GEOM is elegant and easy to extend, but very wasteful for
: the simple case, where the simple case is one or two simple
: partition transforms (mbr, bsdlabel) and/or a simple stripe/mirror
: transform.  None of these need a dedicated dispatch context in order
: to operate.  What I'd like to explore is compiling the GEOM stack at
: creation time into a linear array of operations that happen without
: a g_down/g_up context switch.  As providers and consumers taste each
: other and build a stack, that stack gets compiled into a graph, and
: that graph gets executed directly from the calling context, both
: from the dev_strategy() side on the top and the bio_done() on the
: bottom.  GEOM classes that need a detached context can mark
: themselves as such, doing so will prevent a graph from being
: created, and the current dispatch model will be retained.

I have a few things to say on this.

First, I've done similar things at past companies for systems that are
similar to geom's queueing environment.  It is possible to convert the
queueing nodes in the graph to filtering nodes in the graph.  Another
way to look at this is to say you're implementing direct dispatch into
geom's stack.  This can be both good and bad, but should reduce
latency a lot.

One problem that I see is that you are calling into the driver from a
different set of contexts.  The queueing stuff was there to protect
the driver from LoRs due to its routines being called from many
different contexts, sometimes with other locks held (fact of life
often in the kernel).

So this certainly is something worth exploring, especially if we have
optimized paths for up/down for certain geom classes while still
allowing the current robust, but slow, paths for the more complicated
nodes in the tree.  It remains to be see if there's going to be issues
around locking order, but we've hit that with both geom and ifnet in
the past, so caution (eg, running with WITNESS turned on early and
often) is advised.

Warner
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: HEADS UP: COMPAT_IA32 renamed COMPAT_FREEBSD32

2010-03-22 Thread David O'Brien
On Fri, Mar 12, 2010 at 12:50:32PM -0700, M. Warner Losh wrote:
 : On Thu, Mar 11, 2010 at 07:24:23PM -0700, M. Warner Losh wrote:
 So the issue isn't as cut and dried as you might think.  There's
 multiple different conventions used here in addition to your simple
 example.

I guess we'd have to take a poll to find out.  Seems pretty cut and dried
to me.  COMPAT_FREEBSDn has an established context that does not match
this new usage.  That is - same bit'ness, compatibility with an older
FreeBSD API for the same architecture.  All the other COMPAT_* are for
foreign ABI compatibility.  COMPAT_LINUX32 possibly should have been
COMPAT_LINUX_X86_64.  (or is it MI and is usable as-is for PowerPC
and MIPS?  I haven't looked that deeply at the code.)


 Users of 64-bit systems that will be using COMPAT_FREEBSD32
 are likely to find this a natural extension of the COMPAT_LINUX32 that
 they are likely already using.

You know I am such a user - and I don't think it is so clear given the
existence (and purpose) of COMPAT_FREEBSDn for the past many years.

While it does match the directory name of 'sys/compat/freebsd32', it may
be that freebsd32 was a poor choice for that directory's name.  But
given the recent discussion in another thread - I won't even suggest
we rename it.

-- 
-- David  (obr...@freebsd.org)
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Alexander Sack
On Mon, Mar 22, 2010 at 2:45 PM, M. Warner Losh i...@bsdimp.com wrote:
 In message: d9d66012-16fd-4fb6-ab6a-9a8d17727...@samsco.org
            Scott Long sco...@samsco.org writes:
 : I'd like to go in the opposite direction.  The queue-dispatch-queue
 : model of GEOM is elegant and easy to extend, but very wasteful for
 : the simple case, where the simple case is one or two simple
 : partition transforms (mbr, bsdlabel) and/or a simple stripe/mirror
 : transform.  None of these need a dedicated dispatch context in order
 : to operate.  What I'd like to explore is compiling the GEOM stack at
 : creation time into a linear array of operations that happen without
 : a g_down/g_up context switch.  As providers and consumers taste each
 : other and build a stack, that stack gets compiled into a graph, and
 : that graph gets executed directly from the calling context, both
 : from the dev_strategy() side on the top and the bio_done() on the
 : bottom.  GEOM classes that need a detached context can mark
 : themselves as such, doing so will prevent a graph from being
 : created, and the current dispatch model will be retained.

 I have a few things to say on this.

 First, I've done similar things at past companies for systems that are
 similar to geom's queueing environment.  It is possible to convert the
 queueing nodes in the graph to filtering nodes in the graph.  Another
 way to look at this is to say you're implementing direct dispatch into
 geom's stack.  This can be both good and bad, but should reduce
 latency a lot.

 One problem that I see is that you are calling into the driver from a
 different set of contexts.  The queueing stuff was there to protect
 the driver from LoRs due to its routines being called from many
 different contexts, sometimes with other locks held (fact of life
 often in the kernel).

 So this certainly is something worth exploring, especially if we have
 optimized paths for up/down for certain geom classes while still
 allowing the current robust, but slow, paths for the more complicated
 nodes in the tree.  It remains to be see if there's going to be issues
 around locking order, but we've hit that with both geom and ifnet in
 the past, so caution (eg, running with WITNESS turned on early and
 often) is advised.

Am I going crazy or does this sound a lot like Sun/SVR's stream based
network stack?

 (design and problems, stream stack locking was notoriously tricky for
the exact issue mentioned above, different running contexts with
different locking granularity/requirements).

-aps
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: HEADS UP: COMPAT_IA32 renamed COMPAT_FREEBSD32

2010-03-22 Thread M. Warner Losh
In message: 20100322185331.ga88...@dragon.nuxi.org
David O'Brien obr...@freebsd.org writes:
: On Fri, Mar 12, 2010 at 12:50:32PM -0700, M. Warner Losh wrote:
:  : On Thu, Mar 11, 2010 at 07:24:23PM -0700, M. Warner Losh wrote:
:  So the issue isn't as cut and dried as you might think.  There's
:  multiple different conventions used here in addition to your simple
:  example.
: 
: I guess we'd have to take a poll to find out.  Seems pretty cut and dried
: to me.  COMPAT_FREEBSDn has an established context that does not match
: this new usage.  That is - same bit'ness, compatibility with an older
: FreeBSD API for the same architecture.  All the other COMPAT_* are for
: foreign ABI compatibility.  COMPAT_LINUX32 possibly should have been
: COMPAT_LINUX_X86_64.  (or is it MI and is usable as-is for PowerPC
: and MIPS?  I haven't looked that deeply at the code.)

no, COMPAT_LINUX32 is the right name.  While we don't have PowerPC or
MIPS linux emulation bits in the kernel, the code if for dealing with
running 32-bit binaries on 64-bit machines.  There may be a little
leakage of x86 specific goo here, but not a lot.

Warner
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: HEADS UP: COMPAT_IA32 renamed COMPAT_FREEBSD32

2010-03-22 Thread M. Warner Losh
P.S.  I think that there's much traction to the idea of moving from
COMPAT_FREEBSDx to some other variable called, for example,
COMPAT_FREEBSD_BACK_TO=x, which will give compatibility for binaries
as old as FreeBSD x.0, and have all the other magic handled behind the
scenes.  This would render the inconsistency with COMPAT_FREEBSDx part
of the debate completely moot.

Warner
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: HEADS UP: COMPAT_IA32 renamed COMPAT_FREEBSD32

2010-03-22 Thread Daniel Eischen

[ Some CC's stripped ]

On Mon, 22 Mar 2010, M. Warner Losh wrote:


P.S.  I think that there's much traction to the idea of moving from
COMPAT_FREEBSDx to some other variable called, for example,
COMPAT_FREEBSD_BACK_TO=x, which will give compatibility for binaries
as old as FreeBSD x.0, and have all the other magic handled behind the
scenes.  This would render the inconsistency with COMPAT_FREEBSDx part
of the debate completely moot.


Doesn't matter.  We're still use to COMPAT_FREEBSDx since
it's been here so long.  So regardless if you rename them
to COMPAT_FREEBSD_BACK_TO=x, it is still potentially confusing.

COMPAT_ARCH32 and all other choices David mentions seem like
much better names - even if there wasn't any existing
COMPAT_FREEBSDx knobs.

My $0.02.

--
DE
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Poul-Henning Kamp
In message 3c0b01821003221207p4e4eecabqb4f448813bf5a...@mail.gmail.com, Alexa
nder Sack writes:

Am I going crazy or does this sound a lot like Sun/SVR's stream based
network stack?

That is a good and pertinent observation.

I did investigate a number of optimizations to the g_up/g_down scheme
I eventually adopted, but found none that gained anything justifying
the complexity they brought.

In some cases, the optimizations used more CPU cycles than the straight
g_up/g_down path, but obviously, the circumstances are vastly different
with CPUs having 10 times higher clock, multiple cores and SSD disks,
so a fresh look at this tradeoff is in order.

-- 
Poul-Henning Kamp   | UNIX since Zilog Zeus 3.20
p...@freebsd.org | TCP/IP since RFC 956
FreeBSD committer   | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [PATCH] rename COMPAT_FREEBSD32

2010-03-22 Thread Marcel Moolenaar

On Mar 22, 2010, at 10:52 AM, David O'Brien wrote:

 On Mon, Mar 15, 2010 at 09:00:18AM -0700, Julian Elischer wrote:
 I certainly agree.. can it be changed please?
 
 I've waited a while to see what other opinions would be expressed on this
 topic.  I believe there is sufficient support to rename COMPAT_FREEBSD32
 to something else based on responses in the mailing lists.
 
 I am sorry if some may wish to label this a bikeshead.  But we seem to
 have many folks disliking COMPAT_FREEBSD32.
 
 
 Based on responses to the topic of COMPAT_FREEBSD32, the following
 were the suggestions offered:
COMPAT_ARCH32, COMPAT_ARCH_32BIT, COMPAT_32BIT_ARCH, COMPAT_32BIT,
COMPAT_FREEBSD32BIT

There's probably a bigger problem than just how we name it. The option
really encodes 2 independent aspects:
1.  Support for a 32-bit ABI (i.e. ILP32)
2.  Support for a particular OS in ILP32.

Of course 2 implies 1.

For example:
COMPAT_IA32 in sys/ia64/ia64/machdep.c enabled code to save and restore
IA32 registers as part of cpu_switch(). In this context COMPAT_IA32 was
perfectly named. It's now called COMPAT_FREEBSD32, which doesn't make a
lot of sense because what if I only want to support Linux/ia32 and not
FreeBSD/ia32 (or vice-versa if you club them under a single COMPAT_*32)?

-- 
Marcel Moolenaar
xcl...@mac.com



___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


HEADSUP: zlib updated [svn commit: r205471 - in head: . lib/libz lib/libz/contrib lib/libz/doc sys/sys]

2010-03-22 Thread Xin LI
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Hi,

Just a heads-up that zlib in base system (libz) has been updated to
1.2.4.  We tried to keep -HEAD as close as possible to the vendor
version, but there is some changes in its internal data structure, and
we did not use versioned symbols in the past, making shared library
version bump unavoidable.

A MFC of this update is planned, but we will have to make some rather
aggressive changes against the library and more testing.

Please make sure that you have at least libxml2-2.7.6_2 in your ports
tree before even thinking about updating your ports tree.  Older libxml2
uses some knowledge of zlib internals that has been changed in this
update which is known to cause problem.

-  Original Message 
Subject: svn commit: r205471 - in head: . lib/libz lib/libz/contrib
lib/libz/doc sys/sys
Date: Mon, 22 Mar 2010 21:11:55 + (UTC)
From: Xin LI delp...@freebsd.org
To: src-committ...@freebsd.org, svn-src-...@freebsd.org,
svn-src-h...@freebsd.org

Author: delphij
Date: Mon Mar 22 21:11:55 2010
New Revision: 205471
URL: http://svn.freebsd.org/changeset/base/205471

Log:
  Update to zlib 1.2.4 and add versioned symbols to the
  library.

  Sponsored by: iXsystems, Inc.

-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.14 (FreeBSD)

iQEcBAEBAgAGBQJLp+C4AAoJEATO+BI/yjfBL8QH/12Mu9ihnH6JcySY7LiKukfl
448LMbxneP/JHwYuhFGhvbffd0N64HWzLKEF0Cp0HCH8ULuMIuoAjRsUjZSgF+et
AaBXN0Su0Pw4kkcWIJ0Ruza5oDbVNVHB8XAHs/kIbWz0QS2v35FUCnFnvw1IVgIj
8NBe1Z+nR+dFWamc7ddFwxKnmSEIWzebykpvMrJoweAxzBKfcslNaCbZhfFe+j/D
1LrlRq97RM95SVUTnaFXPWr6zZCxFLhcFaGOOWxPV1g5TOgYaFO72fICXNgKgsWH
TCwOzKV97vXfRx87yVWF/5CwOmlXiVAL5CmL1O3H6+PcOa2gWOZTZ48dorfol9w=
=jrhi
-END PGP SIGNATURE-
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Pawel Jakub Dawidek
On Mon, Mar 22, 2010 at 08:23:43AM +, Poul-Henning Kamp wrote:
 In message 4ba633a0.2090...@icyb.net.ua, Andriy Gapon writes:
 on 21/03/2010 16:05 Alexander Motin said the following:
  Ivan Voras wrote:
  Hmm, it looks like it could be easy to spawn more g_* threads (and,
  barring specific class behaviour, it has a fair chance of working out of
  the box) but the incoming queue will need to also be broken up for
  greater effect.
  
  According to notes, looks there is a good chance to obtain races, as
  some places expect only one up and one down thread.
 
 I haven't given any deep thought to this issue, but I remember us discussing
 them over beer :-)
 
 The easiest way to obtain more parallelism, is to divide the mesh into
 multiple independent meshes.
 
 This will do you no good if you have five disks in a RAID-5 config, but
 if you have two disks each mounted on its own filesystem, you can run
 a g_up  g_down for each of them.

A class is suppose to interact with other classes only via GEOM, so I
think it should be safe to choose g_up/g_down threads for each class
individually, for example:

/dev/ad0s1a (DEV)
   |
g_up_0 + g_down_0
   |
 ad0s1a (BSD)
   |
g_up_1 + g_down_1
   |
 ad0s1 (MBR)
   |
g_up_2 + g_down_2
   |
 ad0 (DISK)

We could easly calculate g_down thread based on bio_to-geom-class and
g_up thread based on bio_from-geom-class, so we know I/O requests for
our class are always coming from the same threads.

If we could make the same assumption for geoms it would allow for even
better distribution.

-- 
Pawel Jakub Dawidek   http://www.wheelsystems.com
p...@freebsd.org   http://www.FreeBSD.org
FreeBSD committer Am I Evil? Yes, I Am!


pgpFAxWFcI5ds.pgp
Description: PGP signature


Re: Increasing MAXPHYS

2010-03-22 Thread Scott Long

On Mar 22, 2010, at 5:36 PM, Pawel Jakub Dawidek wrote:

 On Mon, Mar 22, 2010 at 08:23:43AM +, Poul-Henning Kamp wrote:
 In message 4ba633a0.2090...@icyb.net.ua, Andriy Gapon writes:
 on 21/03/2010 16:05 Alexander Motin said the following:
 Ivan Voras wrote:
 Hmm, it looks like it could be easy to spawn more g_* threads (and,
 barring specific class behaviour, it has a fair chance of working out of
 the box) but the incoming queue will need to also be broken up for
 greater effect.
 
 According to notes, looks there is a good chance to obtain races, as
 some places expect only one up and one down thread.
 
 I haven't given any deep thought to this issue, but I remember us discussing
 them over beer :-)
 
 The easiest way to obtain more parallelism, is to divide the mesh into
 multiple independent meshes.
 
 This will do you no good if you have five disks in a RAID-5 config, but
 if you have two disks each mounted on its own filesystem, you can run
 a g_up  g_down for each of them.
 
 A class is suppose to interact with other classes only via GEOM, so I
 think it should be safe to choose g_up/g_down threads for each class
 individually, for example:
 
   /dev/ad0s1a (DEV)
  |
   g_up_0 + g_down_0
  |
ad0s1a (BSD)
  |
   g_up_1 + g_down_1
  |
ad0s1 (MBR)
  |
   g_up_2 + g_down_2
  |
ad0 (DISK)
 
 We could easly calculate g_down thread based on bio_to-geom-class and
 g_up thread based on bio_from-geom-class, so we know I/O requests for
 our class are always coming from the same threads.
 
 If we could make the same assumption for geoms it would allow for even
 better distribution.

The whole point of the discussion, sans PHK's interlude, is to reduce the 
context switches and indirection, not to increase it.  But if you can show 
decreased latency/higher-iops benefits of increasing it, more power to you.  I 
would think that the results of DFly's experiment with 
parallelism-via-more-queues would serve as a good warning, though.

Scott

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Increasing MAXPHYS

2010-03-22 Thread Julian Elischer

Pawel Jakub Dawidek wrote:

On Mon, Mar 22, 2010 at 08:23:43AM +, Poul-Henning Kamp wrote:

In message 4ba633a0.2090...@icyb.net.ua, Andriy Gapon writes:

on 21/03/2010 16:05 Alexander Motin said the following:

Ivan Voras wrote:

Hmm, it looks like it could be easy to spawn more g_* threads (and,
barring specific class behaviour, it has a fair chance of working out of
the box) but the incoming queue will need to also be broken up for
greater effect.

According to notes, looks there is a good chance to obtain races, as
some places expect only one up and one down thread.

I haven't given any deep thought to this issue, but I remember us discussing
them over beer :-)

The easiest way to obtain more parallelism, is to divide the mesh into
multiple independent meshes.

This will do you no good if you have five disks in a RAID-5 config, but
if you have two disks each mounted on its own filesystem, you can run
a g_up  g_down for each of them.


A class is suppose to interact with other classes only via GEOM, so I
think it should be safe to choose g_up/g_down threads for each class
individually, for example:

/dev/ad0s1a (DEV)
   |
g_up_0 + g_down_0
   |
 ad0s1a (BSD)
   |
g_up_1 + g_down_1
   |
 ad0s1 (MBR)
   |
g_up_2 + g_down_2
   |
 ad0 (DISK)

We could easly calculate g_down thread based on bio_to-geom-class and
g_up thread based on bio_from-geom-class, so we know I/O requests for
our class are always coming from the same threads.

If we could make the same assumption for geoms it would allow for even
better distribution.


doesn't really help my problem however.. I just want to access the 
base provider directly with no geom thread involved.






___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: build failures after stdlib update

2010-03-22 Thread Scot Hetzel
On Sun, Mar 21, 2010 at 7:29 PM, jhell jh...@dataix.net wrote:
 Native is equal to CPUTYPE not being defined right ?

Built into GCC is the ability to auto-detect the CPUTYPE when
-mtune=native, if you run this command GCC will tell  ouput your
processor type:

gcc -v -x c -E -mtune=native /dev/null -o /dev/null 21 | grep mtune
| sed -e 's/.*mtune=//'

 So if the above is true why would you set CPUTYPE to native in the first
 place ? when you can just leave it unset and its equal to native.


Native allows one to build the sources to the current build machines
cputype.  There is one bug when setting the CPUTYPE to native, the
FreeBSD build system fails to correctly set the MACHINE_CPU to the
correct value.

I had discovered this problem back in May 2007:

http://www.freebsd.org/cgi/query-pr.cgi?pr=112997

Just apply the last patch to share/mk/bsd.cpu.mk and that will fix the problem.

Scot
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


MACHINE_CPU not being set correctly when CPUTYPE=native.

2010-03-22 Thread Scot Hetzel
Could someone commit the last patch in PR 112997 to
share/mk/bsd.cpu.mk, as it fixes the bug where MACHINE_CPU is not set
correctly when CPUTYPE is set to 'native'.

On Tue, Aug 28, 2007 at 1:54 AM, Scot Hetzel swhet...@gmail.com wrote:
 Gcc 4.2 has a new cpu_type (native) for x86 and amd64 systems.  This
 cpu_type is to allow gcc to automatically detect the processor type
 that gcc is running on.

 The problem is that setting CPUTYPE?=native in either src.conf or
 make.conf will cause MACHINE_CPU to be set to the wrong value for the
 native cpu.

 For example on a system where the processor is a k8, setting CPUTYPE
 to k8, shows that MACHINE_CPU is set as follows:

 hp010# make -V MACHINE_CPU -DCPUTYPE=k8
 k8 3dnow amd64 sse2 sse mmx

 But setting CPUTYPE to native on a k8 system sets MACHINE_CPU to this value:

 hp010# make -V MACHINE_CPU -DCPUTYPE=native
 unknown amd64 sse2 sse mmx

 After patching share/mk/bsd.cpu.mk (see attachment) or the last patch
 to PR 112997:

  http://www.freebsd.org/cgi/query-pr.cgi?pr=112997

 setting CPUTYPE to native now works correctly when setting the value
 for MACHINE_CPU:

 hp010# make -V MACHINE_CPU -V CPUTYPE -DCPUTYPE=native
 k8 3dnow amd64 sse2 sse mmx
 k8

 Could this get committed before -CURRENT is branched.

 Thanks,

 Scot
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org