Custom Kernel build and ZFS prefetch

Trond Endrestøl Trond.Endrestol at fagskolen.gjovik.no
Wed Feb 11 08:58:33 UTC 2015


On Tue, 10 Feb 2015 15:17-0500, R0B_ROD wrote:

> # kldstat

>From my own experience some of these modules can be statically 
compiled in the kernel:


> Id Refs Address            Size     Name
>  1   40 0xffffffff80200000 e340d8   kernel

>  2    1 0xffffffff81035000 2f9740   zfs.ko
>  3    2 0xffffffff8132f000 6678     opensolaris.ko

Use options ZFS for zfs.ko and opensolaris.ko.

>  4    1 0xffffffff81411000 119559   radeonkms.ko
>  5    1 0xffffffff8152b000 48587    drm2.ko

>  6    4 0xffffffff81574000 22b6     iicbus.ko
>  7    1 0xffffffff81577000 1a56     iic.ko
>  8    1 0xffffffff81579000 1e4a     iicbb.ko

Use:

device iicbus
device iicbb
device ic
device iic

>  9    1 0xffffffff8157b000 18f1     radeonkmsfw_PALM_pfp.ko
> 10    1 0xffffffff8157d000 1cee     radeonkmsfw_PALM_me.ko
> 11    1 0xffffffff8157f000 136c     radeonkmsfw_SUMO_rlc.ko

I may be wrong, but I doubt you can have drm2 and radeonkms statically 
compiled in the kernel.

There's a good reason to avoid compiling the KMS drivers in the 
kernel. In the event of a major bug, it can be beneficial to have a 
running system with only the VGA driver active. Plus, you can 
experiment with different versions of the .ko files.

At any rate, /usr/src/sys/conf/NOTES and 
/usr/src/sys/amd64/conf/NOTES are your friends.

However, you won't find options ZFS mentioned anywhere but in 
/usr/src/sys/conf/files and even there the option is a bit obscured.

> # uname -a
> FreeBSD k8-bsd 10.1-STABLE FreeBSD 10.1-STABLE #0: 
> Mon Feb  9 20:42:19 EST 2015     
> root at k8-bsd:/usr/obj/usr/src/sys/MDFK4.2  amd64
> 
> KERNCONF:
> 
> profile		2
> cpu		HAMMER
> ident		MDFK
> 
> makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
> makeoptions	WITH_CTF=1		# Run ctfconvert(1) for DTrace support
> 
> options 	SCHED_ULE		# ULE scheduler
> options 	PREEMPTION		# Enable kernel thread preemption
> options 	INET			# InterNETworking
> options 	INET6			# IPv6 communications protocols
> options 	TCP_OFFLOAD		# TCP offload
> options 	SCTP			# Stream Control Transmission Protocol
> options 	FFS			# Berkeley Fast Filesystem
> options 	SOFTUPDATES		# Enable FFS soft updates support
> options 	UFS_ACL			# Support for access control lists
> options 	UFS_DIRHASH		# Improve performance on big directories
> options 	UFS_GJOURNAL		# Enable gjournal-based UFS journaling
> options 	QUOTA			# Enable disk quotas for UFS
> options 	MD_ROOT			# MD is a potential root device
> options 	NFSCL			# New Network Filesystem Client
> options 	NFSD			# New Network Filesystem Server
> options 	NFSLOCKD		# Network Lock Manager
> options 	NFS_ROOT		# NFS usable as /, requires NFSCL
> options 	MSDOSFS			# MSDOS Filesystem
> options 	CD9660			# ISO 9660 Filesystem
> options 	PROCFS			# Process filesystem (requires PSEUDOFS)
> options 	PSEUDOFS		# Pseudo-filesystem framework
> options 	GEOM_PART_GPT		# GUID Partition Tables.
> options 	GEOM_LABEL		# Provides labelization
> options 	COMPAT_FREEBSD32	# Compatible with i386 binaries
> options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
> options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
> options 	COMPAT_FREEBSD6		# Compatible with FreeBSD6
> options 	COMPAT_FREEBSD7		# Compatible with FreeBSD7
> options 	SCSI_DELAY=5000		# Delay (in ms) before probing SCSI
> options 	KTRACE			# ktrace(1) support
> options 	STACK			# stack(9) support
> options 	SYSVSHM			# SYSV-style shared memory
> options 	SYSVMSG			# SYSV-style message queues
> options 	SYSVSEM			# SYSV-style semaphores
> options 	_KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
> options 	PRINTF_BUFR_SIZE=128	# Prevent printf output being interspersed.
> options 	KBD_INSTALL_CDEV	# install a CDEV entry in /dev
> options 	HWPMC_HOOKS		# Necessary kernel hooks for hwpmc(4)
> options 	AUDIT			# Security event auditing
> options 	CAPABILITY_MODE		# Capsicum capability mode
> options 	CAPABILITIES		# Capsicum capabilities
> options 	PROCDESC		# Support for process descriptors
> options 	MAC			# TrustedBSD MAC Framework
> options 	KDTRACE_FRAME		# Ensure frames are compiled in
> options 	KDTRACE_HOOKS		# Kernel DTrace hooks
> options 	DDB_CTF			# Kernel ELF linker loads CTF data
> options 	INCLUDE_CONFIG_FILE	# Include this file in kernel
> 
> # Debugging support.  Always need this:
> options 	KDB			# Enable kernel debugger support.
> options 	KDB_TRACE		# Print a stack trace for a panic.
> 
> # Make an SMP-capable kernel by default
> options 	SMP			# Symmetric MultiProcessor Kernel
> 
> # CPU frequency control, temp 
> device		cpufreq
> device		cpuctl
> 
> # Bus support.
> device		agp
> device		acpi
> options 	ACPI_DMAR
> device		pci
> 
> # ATA controllers
> device		ahci			# AHCI-compatible SATA controllers
> device		ata
> options 	ATA_STATIC_ID		# Static device numbering
> 
> # ATA/SCSI peripherals
> device		scbus			# SCSI bus (required for ATA/SCSI)
> device		da			# Direct Access (disks)
> device		cd			# CD
> device		pass			# Passthrough device (direct ATA/SCSI access)
> 
> # atkbdc0 controls both the keyboard and the PS/2 mouse
> device		atkbdc			# AT keyboard controller
> device		atkbd			# AT keyboard
> 
> device		psm			# PS/2 mouse
> device		kbdmux			# keyboard multiplexer
> 
> # Video 
> device		vga			# VGA video card driver
> device		splash			# Splash screen and screen saver support
> options		VESA
> 
> # syscons is the default console driver, resembling an SCO console
> device		sc
> options 	SC_PIXEL_MODE		# add support for the raster text mode
> 
> # vt is the new video console driver
> device		vt
> device		vt_vga
> device		vt_efifb
> 
> # Wireless NIC cards
> device 		bpf   			# Needed for wlan0 & DHCP
> device		wlan			# 802.11 support
> options 	IEEE80211_DEBUG		# enable debug msgs
> options 	IEEE80211_AMPDU_AGE	# age frames in AMPDU reorder q's
> options 	IEEE80211_SUPPORT_MESH	# enable 802.11s draft support
> device		wlan_wep		# 802.11 WEP support
> device		wlan_ccmp		# 802.11 CCMP support
> device		wlan_tkip		# 802.11 TKIP support
> device		wlan_amrr		# AMRR transmit rate control algorithm
> device		ath			# Atheros NICs
> device		ath_pci			# Atheros pci/cardbus glue
> device		ath_hal			# pci/cardbus chip support
> options 	ATH_ENABLE_11N		# Enable 802.11n support for AR5416 and later
> device		ath_rate_sample		# SampleRate tx rate control for ath
> 
> # PCI-E NIC
> device		miibus
> device		re			# 8101 Realtek
> 
> # MMC/SD !NO-SUPPORT-YET
> device 		mmc
> device 		mmcsd
> device 		sdhci
> 
> # Pseudo devices.
> device		loop			# Network loopback
> device		random			# Entropy device
> device		padlock_rng		# VIA Padlock RNG
> device		rdrand_rng		# Intel Bull Mountain RNG
> device		ether			# Ethernet support
> device		vlan			# 802.1Q VLAN support
> device		tun			# Packet tunnel.
> device		md			# Memory "disks"
> device		gif			# IPv6 and IPv4 tunneling
> device		faith			# IPv6-to-IPv4 relaying (translation)
> device		firmware		# firmware assist module
> 
> 
> # USB support
> options 	USB_DEBUG		# enable debug msgs
> device		uhci			# UHCI PCI->USB interface
> device		ohci			# OHCI PCI->USB interface
> device		ehci			# EHCI PCI->USB interface (USB 2.0)
> device		xhci			# XHCI PCI->USB interface (USB 3.0)
> device		usb			# USB Bus (required)
> device		ukbd			# Keyboard
> device		umass			# Disks/Mass storage - Requires scbus and da
> 
> # Sound support
> device		sound			# Generic sound driver (required)
> device		snd_hda			# Intel High Definition Audio
> 
> # VirtIO support
> device		virtio			# Generic VirtIO bus (required)
> device		virtio_pci		# VirtIO PCI device
> device		vtnet			# VirtIO Ethernet device
> device		virtio_blk		# VirtIO Block device
> device		virtio_scsi		# VirtIO SCSI device
> device		virtio_balloon		# VirtIO Memory Balloon device
> 
> device		hyperv
> 
> EOF
> 
> I was curious if I can compile the modules above into the kernel and 
> if that would be a good idea. I have made 6 kernels so far just cuz 
> I keep reinstalling to learn more. Im on Root-on-ZFS this time and I 
> can really tell a speed difference in building and making ports. 
> Also I have 4gb of RAM with 4gb swap and was wondering if enabling 
> the "vfs.zfs.prefetch_disable=0" would help if any. Comments? Thanks 
> for the help.

You really should have more than 4 GiB of memory for any serious use 
of ZFS. If this system is simply for experimentation and learning, 
then knock yourself out.

> 
> # cat loader.conf
> kern.geom.label.gptid.enable="0"
> zfs_load="YES"
> hw.vga.textmode=0
> kern.vty=vt

-- 
+-------------------------------+------------------------------------+
| Vennlig hilsen,               | Best regards,                      |
| Trond Endrestøl,              | Trond Endrestøl,                   |
| IT-ansvarlig,                 | System administrator,              |
| Fagskolen Innlandet,          | Gjøvik Technical College, Norway,  |
| tlf. mob.   952 62 567,       | Cellular...: +47 952 62 567,       |
| sentralbord 61 14 54 00.      | Switchboard: +47 61 14 54 00.      |
+-------------------------------+------------------------------------+


More information about the freebsd-questions mailing list