2.0.33 Memory leak (bad)

Kai Henningsen (kaih@khms.westfalen.de)
02 Jan 1998 00:31:00 +0200


I thought the leak was supposed to be gone with .33? Well, it isn't. The
longest uptime I've managed with 2.0.33 is 4 days; I'm beginning to feel
microsoftish.

Looks like the old routing-related problem to me; a huge count for network
allocations, plus a system that has lots of route changes (whenever diald
starts or stops my net connection, which is fairly often).

System:
Linux khms.westfalen.de 2.0.33 #7 Thu Dec 25 15:16:41 CET 1997 i486 unknown

Unmodified kernel sources from ftp.kernel.org.

This is an empty system (X with no login, some console bash sesseions, the
usual daemons, _nothing_ else - even killed top), after 2.5 days uptime,
practically unuseable:

total used free shared buffers cached
Mem: 62676 54212 8464 2584 912 1608
-/+ buffers/cache: 51692 10984
Swap: 229748 13372 216376

This is essentially the same system (less bash, more login) fresh after
reboot:

total used free shared buffers cached
Mem: 62676 31940 30736 31168 5444 11160
-/+ buffers/cache: 15336 47340
Swap: 229748 0 229748

Something is eating memory like there is no tomorrow. That's around 50 MB
gone missing from my 64 MB!

Shift-ScrollLock shortly during reboot:

Jan 2 00:08:04 khms kernel: Mem-info:
Jan 2 00:08:04 khms kernel: Free pages: 5704kB
Jan 2 00:08:04 khms kernel: ( 574*4kB 294*8kB 32*16kB 3*32kB 1*64kB 3*128kB = 5704kB)
Jan 2 00:08:04 khms kernel: Swap cache: add 81161/81161, delete 44678330/70712, find 70437/10326
Jan 2 00:08:04 khms kernel: Free swap: 226620kB
Jan 2 00:08:04 khms kernel: 16384 pages of RAM
Jan 2 00:08:04 khms kernel: 1479 free pages
Jan 2 00:08:04 khms kernel: 715 reserved pages
Jan 2 00:08:04 khms kernel: 881 pages shared
Jan 2 00:08:04 khms kernel: Buffer memory: 1296kB
Jan 2 00:08:04 khms kernel: Buffer heads: 1297
Jan 2 00:08:04 khms kernel: Buffer blocks: 1296
Jan 2 00:08:04 khms kernel: CLEAN: 751 buffers, 196 used (last=196), 0 locked, 0 protected, 0 dirty
Jan 2 00:08:04 khms kernel: LOCKED: 303 buffers, 137 used (last=279), 0 locked, 0 protected, 0 dirty
Jan 2 00:08:04 khms kernel: DIRTY: 214 buffers, 7 used (last=166), 0 locked, 0 protected, 214 dirty
Jan 2 00:08:04 khms kernel: Networking buffers in use : 10
Jan 2 00:08:04 khms kernel: Network buffers locked by drivers : 0
Jan 2 00:08:04 khms kernel: Total network buffer allocations : 7256216
Jan 2 00:08:04 khms kernel: Total failed network buffer allocs : 0
Jan 2 00:08:04 khms kernel: Total free while locked events : 0
Jan 2 00:08:04 khms kernel: IP fragment buffer size : 0

... and after:

Jan 2 00:11:29 khms kernel: Mem-info:
Jan 2 00:11:29 khms kernel: Free pages: 30624kB
Jan 2 00:11:29 khms kernel: ( 4*4kB 6*8kB 4*16kB 1*32kB 0*64kB 238*128kB = 30624kB)
Jan 2 00:11:29 khms kernel: Swap cache: add 0/0, delete 122805/0, find 0/0
Jan 2 00:11:29 khms kernel: Free swap: 229748kB
Jan 2 00:11:29 khms kernel: 16384 pages of RAM
Jan 2 00:11:29 khms kernel: 7707 free pages
Jan 2 00:11:29 khms kernel: 715 reserved pages
Jan 2 00:11:29 khms kernel: 7668 pages shared
Jan 2 00:11:29 khms kernel: Buffer memory: 5444kB
Jan 2 00:11:29 khms kernel: Buffer heads: 5456
Jan 2 00:11:29 khms kernel: Buffer blocks: 5444
Jan 2 00:11:29 khms kernel: CLEAN: 4721 buffers, 290 used (last=4079), 0 locked, 0 protected, 0 dirty
Jan 2 00:11:29 khms kernel: LOCKED: 659 buffers, 47 used (last=659), 0 locked, 0 protected, 0 dirty
Jan 2 00:11:29 khms kernel: DIRTY: 26 buffers, 3 used (last=20), 0 locked, 0 protected, 26 dirty
Jan 2 00:11:29 khms kernel: Networking buffers in use : 501
Jan 2 00:11:29 khms kernel: Network buffers locked by drivers : 0
Jan 2 00:11:29 khms kernel: Total network buffer allocations : 4252
Jan 2 00:11:29 khms kernel: Total failed network buffer allocs : 0
Jan 2 00:11:29 khms kernel: Total free while locked events : 0
Jan 2 00:11:29 khms kernel: IP fragment buffer size : 0

And here's the .config, in case it makes a difference:

#
# Automatically generated make config: don't edit
#

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
CONFIG_KERNELD=y

#
# General setup
#
# CONFIG_MATH_EMULATION is not set
CONFIG_NET=y
# CONFIG_MAX_16M is not set
CONFIG_PCI=y
CONFIG_PCI_OPTIMIZE=y
CONFIG_SYSVIPC=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_JAVA=m
CONFIG_KERNEL_ELF=y
# CONFIG_M386 is not set
CONFIG_M486=y
# CONFIG_M586 is not set
# CONFIG_M686 is not set

#
# Floppy, IDE, and other block devices
#
CONFIG_BLK_DEV_FD=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDETAPE=y
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
CONFIG_BLK_DEV_IDE_PCMCIA=y
CONFIG_BLK_DEV_CMD640=y
CONFIG_BLK_DEV_CMD640_ENHANCED=y
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_TRITON=y
CONFIG_IDE_CHIPSETS=y

#
# Note: most of these also require special kernel boot parameters
#
# CONFIG_BLK_DEV_ALI14XX is not set
# CONFIG_BLK_DEV_DTC2278 is not set
# CONFIG_BLK_DEV_HT6560B is not set
# CONFIG_BLK_DEV_PROMISE is not set
# CONFIG_BLK_DEV_QD6580 is not set
# CONFIG_BLK_DEV_UMC8672 is not set

#
# Additional Block Devices
#
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=y
CONFIG_MD_STRIPED=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_DEV_HD is not set

#
# Networking options
#
CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_INET=y
# CONFIG_IP_FORWARD is not set
CONFIG_IP_MULTICAST=y
CONFIG_SYN_COOKIES=y
CONFIG_RST_COOKIES=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_VERBOSE=y
# CONFIG_IP_MASQUERADE is not set
# CONFIG_IP_TRANSPARENT_PROXY is not set
# CONFIG_IP_ALWAYS_DEFRAG is not set
CONFIG_IP_ACCT=y
# CONFIG_IP_ROUTER is not set
CONFIG_NET_IPIP=m
# CONFIG_IP_MROUTE is not set
CONFIG_IP_ALIAS=m
# CONFIG_ARPD is not set

#
# (it is safe to leave these untouched)
#
# CONFIG_INET_PCTCP is not set
CONFIG_INET_RARP=m
# CONFIG_NO_PATH_MTU_DISCOVERY is not set
CONFIG_IP_NOSR=y
CONFIG_SKB_LARGE=y

#
#
#
CONFIG_IPX=m
CONFIG_ATALK=m
# CONFIG_AX25 is not set
# CONFIG_BRIDGE is not set
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y

#
# SCSI support
#
CONFIG_SCSI=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_CHR_DEV_SG=y

#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
# CONFIG_SCSI_MULTI_LUN is not set
CONFIG_SCSI_CONSTANTS=y

#
# SCSI low-level drivers
#
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA_DMA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_NCR53C406A is not set
CONFIG_SCSI_NCR53C7xx=y
CONFIG_SCSI_NCR53C7xx_sync=y
CONFIG_SCSI_NCR53C7xx_FAST=y
CONFIG_SCSI_NCR53C7xx_DISCONNECT=y
# CONFIG_SCSI_PPA is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_ULTRASTOR is not set
# CONFIG_SCSI_GDTH is not set

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_EQUALIZER is not set
# CONFIG_DLCI is not set
# CONFIG_PLIP is not set
CONFIG_PPP=y

#
# CCP compressors for PPP are only built as modules.
#
CONFIG_SLIP=y
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
# CONFIG_SLIP_MODE_SLIP6 is not set
# CONFIG_NET_RADIO is not set
# CONFIG_NET_ETHERNET is not set
# CONFIG_TR is not set
# CONFIG_FDDI is not set
# CONFIG_ARCNET is not set

#
# ISDN subsystem
#
CONFIG_ISDN=y
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
# CONFIG_ISDN_MPP is not set
CONFIG_ISDN_AUDIO=y
# CONFIG_ISDN_DRV_ICN is not set
# CONFIG_ISDN_DRV_PCBIT is not set
CONFIG_ISDN_DRV_HISAX=y
CONFIG_HISAX_EURO=y
# CONFIG_HISAX_1TR6 is not set
# CONFIG_HISAX_16_0 is not set
CONFIG_HISAX_16_3=y
# CONFIG_HISAX_AVM_A1 is not set
# CONFIG_HISAX_ELSA_PCC is not set
# CONFIG_HISAX_ELSA_PCMCIA is not set
# CONFIG_HISAX_IX1MICROR2 is not set
# CONFIG_ISDN_DRV_SC is not set
# CONFIG_ISDN_DRV_AVMB1 is not set

#
# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
#
# CONFIG_CD_NO_IDESCSI is not set

#
# Filesystems
#
CONFIG_QUOTA=y
CONFIG_MINIX_FS=m
# CONFIG_EXT_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_XIA_FS is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=m
CONFIG_UMSDOS_FS=m
CONFIG_PROC_FS=y
CONFIG_NFS_FS=y
# CONFIG_ROOT_NFS is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_WIN95 is not set
CONFIG_NCP_FS=m
CONFIG_ISO9660_FS=y
CONFIG_HPFS_FS=m
# CONFIG_SYSV_FS is not set
CONFIG_AUTOFS_FS=m
# CONFIG_AFFS_FS is not set
# CONFIG_UFS_FS is not set

#
# Character devices
#
CONFIG_SERIAL=y
# CONFIG_DIGI is not set
# CONFIG_CYCLADES is not set
# CONFIG_STALDRV is not set
# CONFIG_RISCOM8 is not set
CONFIG_PRINTER=y
# CONFIG_SPECIALIX is not set
# CONFIG_MOUSE is not set
CONFIG_UMISC=y
# CONFIG_QIC02_TAPE is not set
# CONFIG_FTAPE is not set
CONFIG_APM=y
# CONFIG_APM_IGNORE_USER_SUSPEND is not set
CONFIG_APM_DO_ENABLE=y
CONFIG_APM_CPU_IDLE=y
# CONFIG_APM_DISPLAY_BLANK is not set
# CONFIG_APM_POWER_OFF is not set
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
# CONFIG_WDT is not set
CONFIG_SOFT_WATCHDOG=y
# CONFIG_PCWATCHDOG is not set
CONFIG_RTC=y

#
# Sound
#
CONFIG_SOUND=y
# CONFIG_PAS is not set
CONFIG_SB=y
CONFIG_ADLIB=y
# CONFIG_GUS is not set
CONFIG_MPU401=y
# CONFIG_UART6850 is not set
# CONFIG_PSS is not set
# CONFIG_GUS16 is not set
# CONFIG_GUSMAX is not set
# CONFIG_MSS is not set
# CONFIG_SSCAPE is not set
# CONFIG_TRIX is not set
# CONFIG_MAD16 is not set
# CONFIG_CS4232 is not set
# CONFIG_MAUI is not set
CONFIG_AUDIO=y
CONFIG_MIDI=y
CONFIG_YM3812=y
SBC_BASE=220
SBC_IRQ=5
SBC_DMA=1
SB_DMA2=5
SB_MPU_BASE=0
SB_MPU_IRQ=-1
MPU_BASE=330
MPU_IRQ=9
DSP_BUFFSIZE=65536
CONFIG_LOWLEVEL_SOUND=y
# CONFIG_ACI_MIXER is not set

#
# Kernel hacking
#
# CONFIG_PROFILE is not set

MfG Kai