Re: suprising mount root behavior

2000-07-21 Thread Mike Smith

> Some new root mount behavior in 4.0 just saved my bacon, but I'm curious
> as to how it's implemented.

8)

> My custom installer accidentally created fstab entries for IDE disks on a
> SCSI-only system.  Thus, fstab point to /dev/ad0s1a for / and /dev/ad0s1b
> for swap.  
> 
> I rebooted the system to try and fix it, and lo and behold it booted up
> correctly!  I had no swap but root was mounted RW so I could fix the
> fstab.
> 
> Now my question is: How did it know?  I'm not setting vfs.root.mountfrom
> in the loader.  
> 
> Also, how did mount know to not override the / mountpoint to the one from
> fstab (and subsequently fail)?

There's a complex order of battle associated with mounting /.  8)

You can read /sys/kern/vfs_conf.c:vfs_mountroot() and associated stuff to 
get the gory details, but the bottom line is that there are several 
layers of fallback, and you were saved by the one that looks at the major 
and minor numbers passed in by the bootloader and tries them if the fstab 
entry fails.

-- 
... every activity meets with opposition, everyone who acts has his
rivals and unfortunately opponents also.  But not because people want
to be opponents, rather because the tasks and relationships force
people to take different points of view.  [Dr. Fritz Todt]




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



suprising mount root behavior

2000-07-21 Thread Doug White

Hello all,

Some new root mount behavior in 4.0 just saved my bacon, but I'm curious
as to how it's implemented.

My custom installer accidentally created fstab entries for IDE disks on a
SCSI-only system.  Thus, fstab point to /dev/ad0s1a for / and /dev/ad0s1b
for swap.  

I rebooted the system to try and fix it, and lo and behold it booted up
correctly!  I had no swap but root was mounted RW so I could fix the
fstab.

Now my question is: How did it know?  I'm not setting vfs.root.mountfrom
in the loader.  

Also, how did mount know to not override the / mountpoint to the one from
fstab (and subsequently fail)?

Doug White|  FreeBSD: The Power to Serve
[EMAIL PROTECTED] |  www.FreeBSD.org



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Specific video hardware support with the advent of the Linux A|W Maya port.

2000-07-21 Thread Mike Muir

Recently, Alias|Wavefront announced they would port Maya to Linux.
Assuming FreeBSD can emulate the linux binary's (and I have no reason to
think that it won't) then what about support for video hardware (high, mid
and consumer -end) which requires more than just a suitable X server? Take
the case of Nvidia's linux drivers which are comprised of a kernel module
which interfaces with the XFree86 4.0/4.0.1 driver also provided. I havn't
looked into the drivers as I lack the knowledge and experience to even
fathom porting to a freebsd kernel module. I understand there is an element
of closed source with these drivers but i'm unsure whether this is at the
module, or the XFree driver.. to cut to the chase, my question is whether
the porting of a driver such as these is the onus of a FreeBSD contributer,
or is it at Nvidia's discretion? Assuming the element of closed source works
under FreeBSD, then how easy would a port like this be? Or is somebody
working on this case [nvidia's 5.xx linux drivers for Xfree86 4.*] as I
comment?
On a wider scale, if a vendor provides a driver, or server for X and
their hardware (lets say a particularly high end piece of equipment such as
an Intergraph Wildcat) perhaps specifically with the intention for a Linux
distrubtion which is to be packaged along with this Intergraph system, would
it be reasonable to assume this would also work under FreeBSD or would the
vendor be required to specifically write a version of their driver or server
for FreeBSD? The reason I ask is that I see no reason why the growing field
of animators using tools such as A|W Maya shouldn't opt to use FreeBSD over
Linux (red hat at that) while they're on their way migrating from NT -- OR
kicking off their endevours. What are (if any) the road blocks which could
stop this from happening?

-mike.



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



sysutils/memtest and FreeBSD

2000-07-21 Thread Mario Sergio Fujikawa Ferreira

Hi,

I just added sysutils/memtest to the FreeBSD ports tree a
couple of days ago. It is a utility to test for faulty memory
subsystem.
However, I've been having some problems with it.
They are not fatal, but really annoying. I am in contact with
the author to try working them out.
Nonetheless, I would like to see if ppl on the
-hackers forum could help me out with the following problem:

I noticed that using 'memtest all' would produce
core dump on my -stable as of 18/07/2000.
Backtracing showed that the problem was due
to the malloc function inside the get_mem function.
get_mem() is used to find out the largest possible memory segment.
It incrementaly reduces the segment passed to malloc to alloc.
It is the malloc function allright. It core dumps on the
1st pass on get_mem(), there is no time to do_reduce. Very weird. ;(

#0  0x280dda41 in isatty () from /usr/lib/libc.so.4
#1  0x280ddd91 in isatty () from /usr/lib/libc.so.4
#2  0x280de4c5 in malloc () from /usr/lib/libc.so.4
#3  0x8049427 in get_mem () at memtest.c:338
#4  0x8048bc5 in main (argc=2, argv=0xbfbff62c) at memtest.c:175
#5  0x80488e1 in _start ()

Instead of just returning a null pointer, it core dumps.
I am not using any /etc/malloc.conf options at all. I know
that 'A' could produce this.

Following some instructions from the author, I tried
an odd change ... since that is his baby not mine. However,
it did not work.

On Thu, Jul 20, 2000 at 08:12:12PM -0600, Charles Cazabon wrote:
> Mario Sergio Fujikawa Ferreira <[EMAIL PROTECTED]> wrote:
>
> Try changing line 103 to allocate a buffer of 256 bytes instead of 100 bytes.
> I haven't looked at that line in a long time.  The output messages may be 
> longer than that now.
> 
> If that's not it, it's crashing during the memory allocation phase.  I twould
> take some additional debugging to figure out where.

It did not work. 'memtest all' still core dumps.
By the way, one bug that is not FreeBSD related though,
whenever I try 'memtest 4G':

---
./memtest 4G
memtest v. 2.93.1
(C) 2000 Charles Cazabon <[EMAIL PROTECTED]>
Original v.1 (C) 1999 Simon Kirby <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>

./memtest:  amount of memory to allocate too small.
---

Nonetheless, using 1G, 2G, 3G and 5G work. Just to mention.
Don't worry about it. I am not touching the bit wise code now. I
am leaving that to the author. I am worried about the core dump
amongst other projects now.

Regards,
Mario Ferreira


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Fwd: /etc/defaults/make.conf:LEAPSECONDS= true?

2000-07-21 Thread Selina


>Please remove




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Please Remove

2000-07-21 Thread Selina

Please remove [EMAIL PROTECTED], or [EMAIL PROTECTED] from
you list..

Thank you.



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



/etc/defaults/make.conf:LEAPSECONDS= true?

2000-07-21 Thread Mario Sergio Fujikawa Ferreira

Hi,

I was wondering if this should go inside
/etc/defaults/make.conf.

--- /usr/src/etc/defaults/make.conf Sun Jul 16 05:30:30 2000
+++ /tmp/make.conf  Fri Jul 21 18:42:35 2000
@@ -41,6 +41,9 @@
 # To build perl with thread support
 #PERL_THREADED=true
 #
+# Compile zoneinfo with correct leap second handling 
+#LEAPSECONDS=  true
+#
 # To avoid building various parts of the base system:
 #NO_CVS=   true# do not build CVS
 #NO_BIND=  true# do not build BIND

If it does not, where in the handbook should
I drop a note about it, besides FAQ (of course).

Regards,
Mario Ferreira


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Intel 840 Chipset Discontinue

2000-07-21 Thread Mike Smith

> I was told by several of my distributors that all motherboards based off
> of the Intel 840 chipset are being discontinued. That means the Supermicro
> PIIDM3 and PIIIDME, and any other 840 board.

I have mixed feelings about this, but on the whole I think it's probably 
for the best.  I've had really patchy results with the i840, and 
performance hasn't been impressive.

> Supermicro has two new boards, 370DL3 and 370DLE. Identical in specs to
> the 840 boards, but using some kind of "ServerWork LE" chipset. However, I
> have also been hearing bad news about these boards as well.

We've had some issues with the RCC chipsets in Dell systems, yes.

> Has anyone worked with these boards? Supermicro SAYS that they work fine
> under Linux and Solaris. However, one of my distributors says thay they
> are extremely touchy when it comes to memory. Only Registered PC133 ECC
> memory will work.
> 
> If someone at freebsd.org wants to seriously test these boards, let me
> know, and I'll donate one. Without the 840 boards, server configs are now
> back to the 440GX days!

FreeBSD Test Labs would very much appreciate the opportunity to beat one 
of these boards up in the name of science.  If you don't have a better 
taker, you can send us one at:

 FreeBSD Test Labs
 BSDi Open Source Solutions
 4041 Pike Lane #F
 Concord, CA 94520

Thanks for the offer!

-- 
... every activity meets with opposition, everyone who acts has his
rivals and unfortunately opponents also.  But not because people want
to be opponents, rather because the tasks and relationships force
people to take different points of view.  [Dr. Fritz Todt]




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Maybe OT, maybe not

2000-07-21 Thread Ulf Zimmermann

On Tue, Jul 18, 2000 at 03:20:44PM -0700, Ulf Zimmermann wrote:
> Hello,
> 
> I got a problem I need to get "solved" as fast as possible. I have here
> a firewall box (FreeBSD based, yeah!) and need to test this in conjunction
> with web crawling. Our current FW1 based Sun firewalls die very fast.
> 
> I need to emulate about 9,000 or more concurrent open tcp sessions. Each
> session should be random sized from 500 to maybe 20,000 bytes data transferred.
> In addition to these I need x amount of initiated tcp sessions which never
> get answered. FW1 with its tcp connection table will create an entry for
> these "failed" sessions and hold it up to its time out. Our crawlers do not.
> 
> So I am basicly looking for a load generator and a "server". Anyone got
> something laying around like that ?


Ok, I got some suggestions, but let me the whole thing.

What do I have to test ? I need to test the ability of the firewall, which
keeps a session table, to handle several ten thousand entries.

Why so many ? Our current crawlers will create 300 tcp session max. It will
try to start a tcp session for a destination (tcp proctocol syn packet).
The firewall will now create an entry in the session table. If the remote
site never answers (not reachable, down, etc) the crawler will time out
the tcp session after like 1 minute, but the firewall (because it never
sees another packet) will not time it out before like 5 minutes (by default
its even 30 minutes). So depending on how many dead sites we hit, we are
having about 9,000 active tcp sessions (30 crawlers at 300 sessions a 
machine) plus several thousand to tenthousands of dead entries on the
firewall.

My current test scenario seems to run out to this:

http servers (something light weight, serving files from memory, no logging)

   

[firewall]

   

load generator.

The direction I am kinda thinking about the load generator is something like
a main thread which spawns off maybe 2,000 threads (if I can do so many or
maybe more), each thread using maybe libfetch to generate a http request
to either a real server on the other side or by sending a request to
a non existing ip to simulate dead sites. It then needs to timeout after
lets say 30 seconds to leave the dead entry on the firewall.


-- 
Regards, Ulf.

-
Ulf Zimmermann, 1525 Pacific Ave., Alameda, CA-94501, #: 510-769-2936
Alameda Networks, Inc. | http://www.Alameda.net  | Fax#: 510-521-5073


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: KLD, kernel threads, zone allocator

2000-07-21 Thread Zhihui Zhang


On Mon, 17 Jul 2000, Zhihui Zhang wrote:

> 
> I am writing a KLD that gives me kernel fault each time I run 'ps' command
> after 'make unload'.  The KLD has a system call to create several kernel
> threads by calling kthread_create(). During unload, I set flags to each
> threads so that they will call exit1() upon wakeup (sleep on a timeout).  
> Before the last thread calls exit1(), it wakeup the kld unload process so
> that make 'unload' can finish. Is there anything wrong or better
> solutions?
> 
> I also use vm_zone to allocate some data structes within the KLD. When
> unloading, I can use zfree() to free them except the zone header that I
> can not free(some_zone, M_ZONE).  This is because M_ZONE is defined as
> *static* in vm_zone.c I wonder if this will cause memory leak after
> several loading and unloading the KLD.
> 
> Finally, I want to know how to save the panic screen without hand writing
> it down.  Any info on debugging under db> after fault?
> 
> Any help is appreciated.

Thanks to those who have helped me privately.  It is not a good idea to
use zone allocator with KLD.  You must clear everything before unloading
the KLD. Any kernel threads can be reparented to initproc to avoid 'ps'
panic.

-Zhihui



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: memory type and its size

2000-07-21 Thread Zhihui Zhang


On Thu, 20 Jul 2000, Zhihui Zhang wrote:

> 
> Does kernel memory of the same type (e.g., M_TEMP) must be allocated
> (using malloc()) with the same (range of) size?  BTW, how to display mbuf
> cluster usages info. Thanks.

A memory type can have memory blocks with different sizes.  Use netstat -m
to display mbuf cluster usages.

-Zhihui



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: clearing pages in the idle loop

2000-07-21 Thread Lars Eggert

Matt Dillon wrote:
> 
> :Alan Cox wrote:
> :> Last year, I tried to reproduce some of the claims/results
> :> in this paper on FreeBSD/x86 and couldn't.  I also tried
> :> limiting the idle loop to clearing pages of one particular
> :...
> :
> :> Finally, it's possible that having these pre-zeroed pages
> :> in your L2 cache might be beneficial if they get allocated
> :> and used right away.  FreeBSD's idle loop zeroes the pages
> :> that are next in line for allocation.
> :
> :That makes sense. Other factors that may have an impact:
> :
> :  * if you always have enough zeroed pages remaining over your
> :benchmark (> ~1/2 free pages), FreeBSD will never do the
> :idle-time zeroing
> :
> :  * it looks to me as if Cort's Linux code will always zero whole
> :pages, while the FreeBSD code is a little smarter and only zeroes
> :used regions of a page (less impact on caches?)
> :
> Since the only effect of a cache miss is less efficient use of
> the cpu, and since the page zeroing only occurs when the cpu is idle,
> I would not expect to see much improvement from attempts to refine
> the page-zeroing operation (beyond the simple hysteresis that FreeBSD
> uses now and perhaps being able to bypass the cache).

The reason why I'm interested in Cort's results is that I'd like to extend
processing in the idle loop to other things (see my other mail). Cort
measured a performance decrease of foreground processing, due to polluted
caches after idle-time processing. We're discussing if disabling caches
during the idle loop may prevent that.

> The real benefit occurs on a medium-to-heavily loaded machine which is
> NOT cpu bound.  Since nearly all page allocations require zero'd pages,
> having a pool of pre-zero'd pages significantly reduces allocation
> latency at just the time the process doing the allocation can best
> benefit from it.  In a cpu-bound system, the idle loop does not run
> as often (or at all) and no pre-zeroing occurs anyway.

I agree. However, on a medium-to-heavily loaded CPU, you'd probably see the
largest decrease of foreground performance, as the idle times are short and
bursty, and so your caches may get polluted more frequently. (Assuming
cache pollution is in fact a problem; Allan seems to not think so.)

If Allan still has his patches, I'll run some experiments, so we have some
numbers to talk about. Maybe it doesn't matter.
 
> In regards to just zeroing the pieces of a page that need zeroing - this
> is NOT an optimization designed for the idle-loop page-zeroing code. 

I made a mistake tracing through the code. Sorry.

But it may be interesting to speculate if this would speed things up. Would
probably require MMU support though.

Lars 
-- 
Lars Eggert <[EMAIL PROTECTED]> Information Sciences Institute
http://www.isi.edu/larse/University of Southern California


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Intel 840 Chipset Discontinue

2000-07-21 Thread Matt Dillon

:Apparently it affects all boards that the Intel 840 chipset.
:
:Yeah, it does suck that the 370DLx boards dont have AGP, but for a server
:you can still find old PCI video cards.

Voodoo 3 2000's (available for PCI or AGP) make great workstation
video cards.  About $100 and you get all the speed, resolution,
and color depth you'll ever need for X short of playing hardcore
games.

-Matt



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: clearing pages in the idle loop

2000-07-21 Thread Matt Dillon

:Alan Cox wrote:
:> Last year, I tried to reproduce some of the claims/results
:> in this paper on FreeBSD/x86 and couldn't.  I also tried
:> limiting the idle loop to clearing pages of one particular
:...
: 
:> Finally, it's possible that having these pre-zeroed pages
:> in your L2 cache might be beneficial if they get allocated
:> and used right away.  FreeBSD's idle loop zeroes the pages
:> that are next in line for allocation.
:
:That makes sense. Other factors that may have an impact:
:
:  * if you always have enough zeroed pages remaining over your 
:benchmark (> ~1/2 free pages), FreeBSD will never do the 
:idle-time zeroing
:
:  * it looks to me as if Cort's Linux code will always zero whole 
:pages, while the FreeBSD code is a little smarter and only zeroes 
:used regions of a page (less impact on caches?)
:
:  * cache size differences between PPC and i386?
:
:I'm looking at Cort's code (arch/ppc/kernel/idle.c), and while he turns off
:the caching for pages he zeroes, I don't see him disabling the L1/2 caches
:...
:Lars   
:-- 
:Lars Eggert <[EMAIL PROTECTED]> Information Sciences Institute

Since the only effect of a cache miss is less efficient use of
the cpu, and since the page zeroing only occurs when the cpu is idle,
I would not expect to see much improvement from attempts to refine
the page-zeroing operation (beyond the simple hysteresis that FreeBSD
uses now and perhaps being able to bypass the cache).

The hysteresis in the idle loop's page-zeroing effectively 
decouples the page-zeroing operation (and any loss of cache) from
the processes benefiting from the availability of pre-zero'd pages.

The real benefit occurs on a medium-to-heavily loaded machine which is
NOT cpu bound.  Since nearly all page allocations require zero'd pages,
having a pool of pre-zero'd pages significantly reduces allocation 
latency at just the time the process doing the allocation can best
benefit from it.  In a cpu-bound system, the idle loop does not run
as often (or at all) and no pre-zeroing occurs anyway.

In regards to just zeroing the pieces of a page that need zeroing - this
is NOT an optimization designed for the idle-loop page-zeroing code.  I
would not expect such an optimization to have any effect on idle-loop
page zeroing performance.  The partial-zeroing code is actually designed
to handle filling in missing spots when a device-backed block (devices
use a 512 byte base blocking factor) is mapped into memory (which requires
a page-sized blocking factor).

For example, when you map the end of a file and the file size is
not page-aligned.  The block device underlying the filesystem
has a 512-byte native blocking factor and the filesystem itself (UFS)
will typically have a 1K fragment blocking factor at the end of the file,
which means that the physical disk I/O via the filesystem device may not
cover an entire MMU page (4K for i386).

The filesystem code doesn't give a damn whether the filesystem buffer
it is reading the data into is zero'd beyond the EOF of the file.  In
fact, we don't even bother to zero that area... UNTIL that particular
page is mapped by some user process.  That is the point where the partial
page-zeroing code comes into play.  It has nothing to do with the idle
loop pre-zeroing but since its a generic routine (part of the VM core),
the idle loops happens to call it generically. 

-Matt



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: clearing pages in the idle loop

2000-07-21 Thread cort

Darn.  I was hoping you had some mechanism for tracking that.  Have you
seen how quicklists work on Linux?  They setup page directories after
they've been freed so the whole things don't need to be cleared when
allocated.  I thought you could do something like that with page clearing
instead if you had such a mechanism.

} My mistake. FreeBSD zeroes the whole page as well. I traced through the
} code incorrectly.

Great, I'll take a look.  Keep me up-to-date if you can, please.

} I'm running FreeBSD-stable right now, though I may switch to -current if I
} get promising results, to make it easier to merge. (There is a web
} interface to the FreeBSD CVS tree at
} http://www.freebsd.org/support.html#cvs).
}
} FYI, I'm interest in this for my thesis, which consists of two parts: (1)
} utilizing idle resources (cpu, memory, disk/network I/O, disk/memory space)
} for non-interfering background processing (i.e. run processes/threads using
} *only* idle capacities); and (2) to use that mechanism for speculative
} techniques.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: clearing pages in the idle loop

2000-07-21 Thread Lars Eggert

[EMAIL PROTECTED] wrote:
> We started losing performance with the idle page clearing so
> I've disabled it and haven't done much with it in quite a while.  The code
> has fallen into disrepair and some has been removed in the latest
> versions.  I'd suggest looking at the early 2.3.x and 2.2.1[23] series of
> Linux kernels.  That's where it was doing its best.

Thanks. I'll get that version.
 
> How do you keep track of what parts of a page are used?  In Linux I was
> just pulling pages off the free-list and zero-ing them.  Do you have a
> bitmap of used regions within pages on BSD?

My mistake. FreeBSD zeroes the whole page as well. I traced through the
code incorrectly.

> I wanted a few bits for each page to describe its state: zero'd,
> non-zero'd, busy being zero'd.  It would have taken some changes to the
> non-arch Linux code to do that and at the time we were moving to a more
> stable tree so I didn't continue with it.  It sounds as though you have a
> framework for doing that sort of thing (and more) with BSD.  Can you send
> me a pointer to the sources you're using?  I'd like to look into it.

I'm running FreeBSD-stable right now, though I may switch to -current if I
get promising results, to make it easier to merge. (There is a web
interface to the FreeBSD CVS tree at
http://www.freebsd.org/support.html#cvs).

FYI, I'm interest in this for my thesis, which consists of two parts: (1)
utilizing idle resources (cpu, memory, disk/network I/O, disk/memory space)
for non-interfering background processing (i.e. run processes/threads using
*only* idle capacities); and (2) to use that mechanism for speculative
techniques.

Lars
-- 
Lars Eggert <[EMAIL PROTECTED]> Information Sciences Institute
http://www.isi.edu/larse/University of Southern California


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Intel 815E

2000-07-21 Thread David B

I was wondering if anyone is using a motherboard with the Intel 815E 
chipset.  If so did you get the onboard video and sound to work?(not that is 
overly important, I would popin an ATI xpert 98 8MB if need be). And if so, 
which frebsd 3.4S, 5.0C or somewhere in between?

I was thinking of the ABIT SE-6, in particular.

To my knowlegde Intel, Asus and Abit are considered good manufacturers.  
What are some others? and which are the manufacturers to avoid?  In 
particular, I was wondering about DFI they cost less but are their products 
stable or problematic?

Thanks,

David

Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: clearing pages in the idle loop

2000-07-21 Thread cort

We started losing performance with the idle page clearing so
I've disabled it and haven't done much with it in quite a while.  The code
has fallen into disrepair and some has been removed in the latest
versions.  I'd suggest looking at the early 2.3.x and 2.2.1[23] series of
Linux kernels.  That's where it was doing its best.

We've also found that using dcbz, which zeros cache lines directly,
actually improves performance.  That is contradictory to one of the
conclusions I drew in that paper.  My conjecture was that the zero'd pages
would not be used often since a process given a fresh page wouldn't read
from it before a write.

I still do think the idle page zero-ing can be useful, though.  If you do
some work with BSD on this please let me know.  I'd like to follow along
since I've been playing with BSD lately.

} Do you still have those FreeBSD patches, Alan? I'd be interested in doing
} some more experiments with that code.
}
} That makes sense. Other factors that may have an impact:
} 
}   * if you always have enough zeroed pages remaining over your 
} benchmark (> ~1/2 free pages), FreeBSD will never do the 
} idle-time zeroing

How do you keep track of what parts of a page are used?  In Linux I was
just pulling pages off the free-list and zero-ing them.  Do you have a
bitmap of used regions within pages on BSD?

}   * it looks to me as if Cort's Linux code will always zero whole 
} pages, while the FreeBSD code is a little smarter and only zeroes 
} used regions of a page (less impact on caches?)
} 
}   * cache size differences between PPC and i386?

Right, those won't be cached if the page is marked non-cacheable.

} I'm looking at Cort's code (arch/ppc/kernel/idle.c), and while he turns off
} the caching for pages he zeroes, I don't see him disabling the L1/2 caches
} explicitly. Is this implicit with setting the non-cacheable flag on the
} PPC? Also, idle-time zeroing is commented out in the version I'm looking at
} (1.68, 1999/10/15), where problems found after the paper was published?

I wanted a few bits for each page to describe its state: zero'd,
non-zero'd, busy being zero'd.  It would have taken some changes to the
non-arch Linux code to do that and at the time we were moving to a more
stable tree so I didn't continue with it.  It sounds as though you have a
framework for doing that sort of thing (and more) with BSD.  Can you send
me a pointer to the sources you're using?  I'd like to look into it.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: clearing pages in the idle loop

2000-07-21 Thread Lars Eggert

(Cort, the reason I'm CCing you is that I'm interested in using some of the
mechanism described in your OSDI'99 paper for FreeBSD, and I've some
questions about your Linux implementation, see below.)

Alan Cox wrote:
> Last year, I tried to reproduce some of the claims/results
> in this paper on FreeBSD/x86 and couldn't.  I also tried
> limiting the idle loop to clearing pages of one particular
> color at a time.  That way, the cache lines replaced by
> the second page you clear are the cache lines holding
> the first page you cleared, and so on for the third,
> fourth, ... pages cleared.  Again, I saw no measurable
> effect on tests like "buildworld", which is a similar
> workload to the paper's if I recall correctly.

Do you still have those FreeBSD patches, Alan? I'd be interested in doing
some more experiments with that code.
 
> Finally, it's possible that having these pre-zeroed pages
> in your L2 cache might be beneficial if they get allocated
> and used right away.  FreeBSD's idle loop zeroes the pages
> that are next in line for allocation.

That makes sense. Other factors that may have an impact:

  * if you always have enough zeroed pages remaining over your 
benchmark (> ~1/2 free pages), FreeBSD will never do the 
idle-time zeroing

  * it looks to me as if Cort's Linux code will always zero whole 
pages, while the FreeBSD code is a little smarter and only zeroes 
used regions of a page (less impact on caches?)

  * cache size differences between PPC and i386?

I'm looking at Cort's code (arch/ppc/kernel/idle.c), and while he turns off
the caching for pages he zeroes, I don't see him disabling the L1/2 caches
explicitly. Is this implicit with setting the non-cacheable flag on the
PPC? Also, idle-time zeroing is commented out in the version I'm looking at
(1.68, 1999/10/15), where problems found after the paper was published?

Lars
-- 
Lars Eggert <[EMAIL PROTECTED]> Information Sciences Institute
http://www.isi.edu/larse/University of Southern California


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Intel 840 Chipset Discontinue

2000-07-21 Thread sthaug

> Supermicro has two new boards, 370DL3 and 370DLE. Identical in specs to
> the 840 boards, but using some kind of "ServerWork LE" chipset. However, I
> have also been hearing bad news about these boards as well.

The IBM Netfinity 3500 servers (possibly other Netfinity models also)
use the Serverworks LE chipset, and work well with FreeBSD 4.0-STABLE.

Steinar Haug, Nethelp consulting, [EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Intel 840 Chipset Discontinue

2000-07-21 Thread Essenz Consulting

Apparently it affects all boards that the Intel 840 chipset.

Yeah, it does suck that the 370DLx boards dont have AGP, but for a server
you can still find old PCI video cards.

On Fri, 21 Jul 2000, Kenneth D. Merry wrote:

> On Fri, Jul 21, 2000 at 12:31:58 -0400, Essenz Consulting wrote:
> > I was told by several of my distributors that all motherboards based off
> > of the Intel 840 chipset are being discontinued. That means the Supermicro
> > PIIDM3 and PIIIDME, and any other 840 board.
> 
> Are you sure they don't just mean any 840 board that uses SDRAM?
> 
> It looks like Supermicro has a RAMBUS 840 board on their web page now:
> 
> http://www.supermicro.com/PRODUCT/MotherBoards/840/PIIIDR3a.htm
> 
> > Supermicro has two new boards, 370DL3 and 370DLE. Identical in specs to
> > the 840 boards, but using some kind of "ServerWork LE" chipset. However, I
> > have also been hearing bad news about these boards as well.
> 
> Not quite identical.  They don't have AGP, which makes it difficult to 
> get graphics boards.  (If you want to use it for a workstation.  Most
> graphics boards don't come in plain PCI anymore.)
> 
> Ken
> -- 
> Kenneth Merry
> [EMAIL PROTECTED]
> 
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-hardware" in the body of the message
> 



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: Intel 840 Chipset Discontinue

2000-07-21 Thread Kenneth D. Merry

On Fri, Jul 21, 2000 at 12:31:58 -0400, Essenz Consulting wrote:
> I was told by several of my distributors that all motherboards based off
> of the Intel 840 chipset are being discontinued. That means the Supermicro
> PIIDM3 and PIIIDME, and any other 840 board.

Are you sure they don't just mean any 840 board that uses SDRAM?

It looks like Supermicro has a RAMBUS 840 board on their web page now:

http://www.supermicro.com/PRODUCT/MotherBoards/840/PIIIDR3a.htm

> Supermicro has two new boards, 370DL3 and 370DLE. Identical in specs to
> the 840 boards, but using some kind of "ServerWork LE" chipset. However, I
> have also been hearing bad news about these boards as well.

Not quite identical.  They don't have AGP, which makes it difficult to 
get graphics boards.  (If you want to use it for a workstation.  Most
graphics boards don't come in plain PCI anymore.)

Ken
-- 
Kenneth Merry
[EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Intel 840 Chipset Discontinue

2000-07-21 Thread Essenz Consulting

I was told by several of my distributors that all motherboards based off
of the Intel 840 chipset are being discontinued. That means the Supermicro
PIIDM3 and PIIIDME, and any other 840 board.

Supermicro has two new boards, 370DL3 and 370DLE. Identical in specs to
the 840 boards, but using some kind of "ServerWork LE" chipset. However, I
have also been hearing bad news about these boards as well.

Has anyone worked with these boards? Supermicro SAYS that they work fine
under Linux and Solaris. However, one of my distributors says thay they
are extremely touchy when it comes to memory. Only Registered PC133 ECC
memory will work.

If someone at freebsd.org wants to seriously test these boards, let me
know, and I'll donate one. Without the 840 boards, server configs are now
back to the 440GX days!

-john v.e.



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



RE: dlopen() and friends from a statically-linked binary?

2000-07-21 Thread Daniel O'Connor


On 20-Jul-00 Raymond Wiker wrote:
>   Is it possible, at all, to use dlopen etc from a
> statically-linked executable? My experiments with FreeBSD-4.0 (see
> below) indicate that it's not possible.

You can't do it from a statically linked binary, however you can create a
dynamic executable with no external unresolved references.. I forget how though
:-/

>   The reason that I'd like this to work is that SBCL (a Common
> Lisp implementation, see http://sbcl.sourceforge.net) needs the
> addresses of certain library symbols (e.g, errno) when building the
> initial lisp image. This seems to require static linking. On the other
> hand, SBCL is severely handicapped if it cannot subsequently use
> dlopen() to load foreign code into the running lisp system.

Well, I don't see why it would need static linking for that.. When the binary
runs the libraries it uses will get loaded, and then it can use dlsym() to get
the addresses it needs.. 
(ie what I am saying is I don't understand your explanation :)

> raw : ~ $ gcc -static dltest.c -o dltest
> raw : ~ $ ./dltest
> dlopen returned 0: Service unavailable
> Handle: 0x0, main: 0x0
> 
> raw : ~ $ gcc dltest.c -o dltest
> raw : ~ $ ./dltest
> Handle: 0x2805e000, main: 0x0
> Handle: 0x0, main: 0x0
> 
> [ Note: this seems wrong; according to the manpage for dlsym, the
> second call should give the same output as the first. ]

Agreed. 

---
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
"The nice thing about standards is that there
are so many of them to choose from."
  -- Andrew Tanenbaum


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: dlopen() and friends from a statically-linked binary?

2000-07-21 Thread Martin Hopkins

> "Raymond" == Raymond Wiker <[EMAIL PROTECTED]> writes:

Raymond> raw : ~ $ cat dltest.c
Raymond> #include 
Raymond> #include 

Raymond> main()
Raymond> {
Raymond>   void *handle;
Raymond>   void *sym;
Raymond>   handle = dlopen(0, RTLD_LAZY);
Raymond>   if (handle == 0)
Raymond> {
Raymond>   fprintf(stderr, "dlopen returned 0: %s\n", dlerror());
Raymond> }
Raymond>   else 
Raymond> {
Raymond>   fprintf(stderr, "Handle: %p, main: %p\n", handle, dlsym(handle, 
"main"));
Raymond> }
Raymond>   fprintf(stderr, "Handle: %p, main: %p\n", 0, dlsym(0, "main"));
Raymond>   return 0;
Raymond> }

Raymond> raw : ~ $ gcc -static dltest.c -o dltest
Raymond> raw : ~ $ ./dltest
Raymond> dlopen returned 0: Service unavailable
Raymond> Handle: 0x0, main: 0x0

Raymond> raw : ~ $ gcc dltest.c -o dltest
Raymond> raw : ~ $ ./dltest
Raymond> Handle: 0x2805e000, main: 0x0
Raymond> Handle: 0x0, main: 0x0

Raymond> [ Note: this seems wrong; according to the manpage for dlsym, the
Raymond> second call should give the same output as the first. ]

It does, it returns NULL.  I'm not sure what your issues with SBCL are
(I'll try to take a look later if I get time).  I believe to get your
sample code above to work you want...

gcc dltest.c -Xlinker -export-dynamic -o dltest

This then gives me

Handle: 0x2805d000, main: 0x8048508
Handle: 0x0, main: 0x8048508

Hope this helps,

Martin



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



Re: dlopen() and friends from a statically-linked binary?

2000-07-21 Thread Raymond Wiker

> raw : ~ $ gcc dltest.c -o dltest
> raw : ~ $ ./dltest
> Handle: 0x2805e000, main: 0x0
> Handle: 0x0, main: 0x0
> 
> [ Note: this seems wrong; according to the manpage for dlsym, the
> second call should give the same output as the first. ]

Sorry about the confusion... the "main" symbol does not appear
to work for this illustration (possibly because it doesn't come from a
dynamic library?). If I try with "errno" instead, I get

raw : ~ $ ./dltest 
Handle: 0x2805e000, errno: 0x280f5cd4
Handle: 0x0, errno: 0x0
raw : ~ $ 

--- according to the manpage for dlsym(), passing 0 for handle should
have the same effect as passing 0 as the path to dlopen; i.e, to
access the symbol table for the running program.

-- 
Raymond Wiker


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



open() error

2000-07-21 Thread Andrey Sverdlichenko

Hello.

I've noticed a strange error in open() syscall: when system booted with a
CD as root (boot -C) the following code fails with EINVAL:

fd = open(c, O_RDONLY | O_NONBLOCK | O_EXLOCK, 0)

When root is hdd with UFS (mounted read-only), this works fine.

Is it a bug or i missed something?



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message



dlopen() and friends from a statically-linked binary?

2000-07-21 Thread Raymond Wiker

[ Re-sent, as it seemed to get lost on my first try. ]

Is it possible, at all, to use dlopen etc from a
statically-linked executable? My experiments with FreeBSD-4.0 (see
below) indicate that it's not possible.

The reason that I'd like this to work is that SBCL (a Common
Lisp implementation, see http://sbcl.sourceforge.net) needs the
addresses of certain library symbols (e.g, errno) when building the
initial lisp image. This seems to require static linking. On the other
hand, SBCL is severely handicapped if it cannot subsequently use
dlopen() to load foreign code into the running lisp system.


raw : ~ $ cat dltest.c
#include 
#include 

main()
{
  void *handle;
  void *sym;
  handle = dlopen(0, RTLD_LAZY);
  if (handle == 0)
{
  fprintf(stderr, "dlopen returned 0: %s\n", dlerror());
}
  else 
{
  fprintf(stderr, "Handle: %p, main: %p\n", handle, dlsym(handle, "main"));
}
  fprintf(stderr, "Handle: %p, main: %p\n", 0, dlsym(0, "main"));
  return 0;
}

raw : ~ $ gcc -static dltest.c -o dltest
raw : ~ $ ./dltest
dlopen returned 0: Service unavailable
Handle: 0x0, main: 0x0

raw : ~ $ gcc dltest.c -o dltest
raw : ~ $ ./dltest
Handle: 0x2805e000, main: 0x0
Handle: 0x0, main: 0x0

[ Note: this seems wrong; according to the manpage for dlsym, the
second call should give the same output as the first. ]

-- 
Raymond Wiker


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message