mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
@ 2003-01-15 17:36 Robert Macaulay
  2003-01-15 18:01 ` Andrew Morton
  2003-01-15 19:18 ` Andrew Morton
  0 siblings, 2 replies; 9+ messages in thread
From: Robert Macaulay @ 2003-01-15 17:36 UTC (permalink / raw)
  To: linux-kernel

In between 2.5.56 and 2.5.57 IO speeds have dropped if CONFIG_PREEMPT is 
set. 

The machine is a 4 processor Xeon with 8GB of RAM. The external storage is
attached to the machine via qlogic 2200 HBAs using the qlogicfc driver.  
The filesystems on the external devices is reiserfs, mounted with noatime
as the only change from defaults. The config file is attached below. The
same config was used for both 2.5.56 and 2.5.57. The config has
preemptable kernel enabled. I know preemption will lower your throughput,
but it was enabled in 2.5.56, and speed was good.

The test involved the simultaneous writing to all 8 filesystems on the 
external storage. On 2.5.56, the vmstat output is below

procs -----------memory---------- ---swap-- -----io---- --system-- 
----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy 
id wa
 8  1      0   7108  87280 7505164    0    0    20  2989  144    56  0 21 
77  1
 8  2      0   8444  85376 7505440    0    0     0 115536 1387  2391  0 93  
1  5
 9  2      0   7684  89364 7502132    0    0     0 112348 1455  2308  0 94  
1  5
 4  2      0   7072  94704 7495600    0    0     0 129468 1382  4314  0 51 
32 18


For 2.5.57, the io bo rate drops, and the system time pegs at 100%

procs -----------memory---------- ---swap-- -----io---- --system-- 
----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy 
id wa
 8  1      0   8000  61196 7535276    0    0    36  4158  147    22  1 40 
58  1
 9  1      0   7468  62316 7533832    0    0     1 79852 1223   303  0 100  
0  0
 9  1      0   6740  64884 7532368    0    0     0 79655 1288   182  0 100  
0  0
 9  0      0   7004  66720 7528828    0    0     0 78841 1261   354  0 100  
0  0
 9  1      0   8272  67604 7526844    0    0     0 77958 1190   204  0 100  
0  0


The profiling information for 2.5.57 is below
/usr/sbin/readprofile -m /boot/System.map-2.5.57-test2 -v | sort -nr +2 | 
head -15
00000000 total                                    436997   2.9703
c011bb60 __preempt_spin_lock                      293278 3054.9792
c0107020 default_idle                              83500 1304.6875
c011bc22 .text.lock.sched                          55920 185.1656
c0119fc0 __wake_up                                  2371  29.6375
c0118960 kmap_atomic                                 941   7.3516
c0121920 do_softirq                                  393   1.8894
c01189f0 kmap_atomic_to_page                         129   1.1518
c011bb00 __might_sleep                               128   1.3333
c0119af0 schedule                                    126   0.1270
c0113e50 flush_tlb_mm                                 47   0.3264
c011bbc0 __preempt_write_lock                         35   0.3571
c01178c0 do_page_fault                                31   0.0251
c01189e0 kunmap_atomic                                17   1.0625
c0124cb0 add_timer                                    15   0.0446

If I recompile 2.5.57 with preemption off, the vmstat rates go back to the 
rates similar to the 2.5.56 w/ preemption turned on.

Is this expected behaviour now?
Thanks in advance.
Robert


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 17:36 2.5.57 IO slowdown with CONFIG_PREEMPT enabled Robert Macaulay
@ 2003-01-15 18:01 ` Andrew Morton
  2003-01-15 19:18 ` Andrew Morton
  1 sibling, 0 replies; 9+ messages in thread
From: Andrew Morton @ 2003-01-15 18:01 UTC (permalink / raw)
  To: Robert Macaulay; +Cc: linux-kernel

Robert Macaulay <robert_macaulay@dell.com> wrote:
>
> Is this expected behaviour now?

Judging by the coffee dribbles on my monitor: no.

Thanks for the detailed report.  Let me crunch on that.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 17:36 2.5.57 IO slowdown with CONFIG_PREEMPT enabled Robert Macaulay
  2003-01-15 18:01 ` Andrew Morton
@ 2003-01-15 19:18 ` Andrew Morton
  2003-01-15 22:12   ` Robert Macaulay
  1 sibling, 1 reply; 9+ messages in thread
From: Andrew Morton @ 2003-01-15 19:18 UTC (permalink / raw)
  To: Robert Macaulay; +Cc: linux-kernel

Robert Macaulay <robert_macaulay@dell.com> wrote:
>
> In between 2.5.56 and 2.5.57 IO speeds have dropped if CONFIG_PREEMPT is 
> set. 
> 
> The machine is a 4 processor Xeon with 8GB of RAM. The external storage is
> attached to the machine via qlogic 2200 HBAs using the qlogicfc driver.  
> The filesystems on the external devices is reiserfs, mounted with noatime
> as the only change from defaults. The config file is attached below. The
> same config was used for both 2.5.56 and 2.5.57. The config has
> preemptable kernel enabled. I know preemption will lower your throughput,
> but it was enabled in 2.5.56, and speed was good.
> 

I cannot reproduce this :(

Machine is a quad pIII Xeon, 4G of RAM (IDE starts bouncing above 4G),
writing four disks (2xIDE, 2xSCSI).

With CONFIG_PREEMPT=y:

 3  1  1   1656   3224   3908 218564    0    0     0 76308 1545   705  1 86 13
 3  1  1   1656   3784   3996 217920    0    0     0 74676 1529   736  0 86 14
 3  1  1   1656   3024   4104 218388    0    0     0 71320 1538   614  0 86 13
 4  0  2   1656   2496   3948 219104    0    0     0 73992 1536   687  0 88 12
 3  1  1   1680   3652   4004 218004    0   24     0 74040 1524   647  0 88 12
 3  1  1   1680   2972   4032 218596   32    0    48 78136 1547   688  0 87 13

oprofile says:

c01685f4 164      0.49068     mpage_writepages
c01e6a14 177      0.529575    journal_mark_dirty
c014c79c 182      0.544535    __block_prepare_write
c01ca90c 190      0.568471    balance_leaf
c01e676c 205      0.61335     do_journal_begin_r
c0131bf4 237      0.709093    generic_file_aio_write_nolock
c01de9b8 251      0.75098     is_leaf
c014c044 290      0.867666    __find_get_block
c01d03f0 442      1.32244     reiserfs_get_block
c01dec24 978      2.92613     search_by_key
c01dc8a0 1836     5.49322     leaf_paste_in_buffer
c01f88f8 2963     8.86515     __copy_from_user_ll
c0108a88 6235     18.6548     poll_idle
c011ad8c 11403    34.1172     __preempt_spin_lock

OK, that's similar to yours.  Disabling preemption:

c01dccd0 576      0.490213    reiserfs_restore_prepared_buffer
c01dbf94 605      0.514894    journal_mark_dirty
c01dbcec 615      0.523404    do_journal_begin_r
c0147a9c 628      0.534468    __block_prepare_write
c01d3f58 637      0.542128    is_leaf
c012f004 658      0.56        generic_file_aio_write_nolock
c01c8828 873      0.742979    reiserfs_commit_write
c01473c4 1376     1.17106     __find_get_block
c01c5b90 1651     1.40511     reiserfs_get_block
c01d41c4 3496     2.97532     search_by_key
c01d1e40 6264     5.33106     leaf_paste_in_buffer
c01edc18 10115    8.60851     __copy_from_user_ll
c0108a58 21450    18.2553     poll_idle
c01c8afc 38908    33.1132     .text.lock.inode

And the I/O rate is the same.  So all we've done here is to move the lock
contention from kernel/sched.c to fs/reiserfs/inode.c.  It'll be
lock_kernel().

So hm.  Confused.  Could you please:

- double check everything.

- try booting with mem=4G?  It could be that something broke and there is
  bounce buffering happening above 4G - the regular kernel profiler often
  will not show this.

- remove the cpu_relax() call from kernel/sched.c:__preempt_spin_lock()

Thanks.


BTW: here is ext2:

 0  4  2    704 136696  13980 3904276    0    0     0 104848 1680   310  1 99  0
 0  4  2    704  30336  14084 4009228    0    0     0 100836 1680   273  0 100  0
 0  4  3   1716   5532   9848 4038584    0 1012     8 99888 1682   342  1 97  3
 2  2  3   1716   5132   9956 4038788    0    0     0 97392 1685   307  0 100  0
 1  3  3   1716   4996  10052 4038832    0    0     0 97276 1689   310  1 99  0
 0  4  3   1716   8252  10160 4035436    0    0     4 100644 1691   321  0 98  2
 2  2  3   1716   5176  10256 4038020    0    0     8 102432 1683   333  2 98  1
 1  3  3   1716   7124  10348 4035804    0    0     0 112740 1691   354  0 100  0

c0134bcc 193      0.337094    __set_page_dirty_nobuffers
c0120bc0 194      0.338841    current_kernel_time
c019890c 249      0.434904    ext2_get_branch
c014c044 261      0.455863    __find_get_block
c0131bf4 265      0.46285     generic_file_aio_write_nolock
c01681bc 280      0.489049    mpage_writepage
c023ab18 300      0.523981    ide_outb
c01685f4 307      0.536207    mpage_writepages
c01305a4 314      0.548433    unlock_page
c0198cd8 372      0.649736    ext2_get_block
c01f88f8 8907     15.557      __copy_from_user_ll
c0108a88 39147    68.3743     poll_idle

So sweet.



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 19:18 ` Andrew Morton
@ 2003-01-15 22:12   ` Robert Macaulay
  2003-01-15 22:33     ` Andrew Morton
  0 siblings, 1 reply; 9+ messages in thread
From: Robert Macaulay @ 2003-01-15 22:12 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

On Wed, 15 Jan 2003, Andrew Morton wrote:
> So hm.  Confused.  Could you please:
> 
> - double check everything.
created 2 kernel trees, patched to 2.5.57. Same config in each except for 
the PREEMPT. Same results(below)
 
> - try booting with mem=4G?  It could be that something broke and there is
>   bounce buffering happening above 4G - the regular kernel profiler often
>   will not show this.
No change, results at bottom
 
> - remove the cpu_relax() call from kernel/sched.c:__preempt_spin_lock()
No change either

I have been hitting an odd issue, and I haven't had a chance to traceback
to where it came from(versionwise). FS changes seem to be getting rolled
back at times.  For example, I run make menuconfig, add my config options
for CONFIG_MEGARAID to be built in, and recompile kernel. I install and
reboot, and that config file, which contained CONFIG_MEGARAID=y, reverts
back to its original state. multiple syncs seem to keep this in the 
correct state. The filesystem that this is occuring on is ext3, mounted 
with defaults, on a megaraid controller. I'll trace this down later and 
post results.

Results, config attached at bottom

Preempt on, mem=4G

 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy 
id wa
 9  0      0 3708656  43480 334772    0    0    31    10  135    14  0  3 
96  1
 9  0      0 3270376  44460 761840    0    0     0 84554 1146    57  0 100  
0  0
10  0      0 2839680  45436 1185396    0    0     0 84579 1219    68  0 
100  0  0
10  0      0 2396048  46004 1622124    0    0     0 85222 1249    81  0 
100  0  0
10  0      0 1963608  46880 2047936    0    0     0 85438 1258    52  0 
100  0  0
10  0      0 1524696  47508 2480336    0    0     0 87675 1229    41  0 
100  0  0
10  0      0 1110296  47984 2888388    0    0     0 81985 1208    23  0 
100  0  0
 8  0      0 690520  49752 3300296    0    0     0 82430 1288    50  0 100  
0  0
10  0      0 275136  51228 3708044    0    0     0 81434 1266    41  0 100  
0  0

00000000 total                                    391373   2.6427
c011bc70 __preempt_spin_lock                      249427 2598.1979
c0107020 default_idle                              82788 1293.5625
c011bd32 .text.lock.sched                          55698 184.4305
c011a0d0 __wake_up                                  1940  24.2500
c0118a70 kmap_atomic                                 693   5.4141
c0121d10 do_softirq                                  300   1.4423
c0119c00 schedule                                    147   0.1482

Preempt off

 9  1      0 4221696  59828 3372500    0    0    54  2356  147    51  1 17 
81  1
 8  1      0 3594336  61208 3989276    0    0     0 110992 1373  1680  0 
91  2  7
 7  1      0 2975704  63588 4596296    0    0     0 116468 1344  1989  0 
92  2  7
 7  1      0 2370264  66660 5189600    0    0     0 117044 1389  2527  0 
92  2  6
 7  1      0 1781400  68724 5767900    0    0     0 111212 1399  2216  0 
92  2  6
10  1      0 1196824  70228 6342416    0    0     0 111518 1395  2122  0 
92  2  7
11  1      0 614664  71968 6914100    0    0     0 110734 1431  2139  0 92  
2  6

00000000 total                                    124674   0.8897
c0107000 default_idle                             104540 1633.4375
c011ac9d .text.lock.sched                          16201  31.4583
c0119550 __wake_up                                  1331  27.7292
c0119120 schedule                                    996   1.0921
c0118200 kmap_atomic                                 854   6.6719
c01204f0 do_softirq                                  293   1.4087


Preempt on, mem=4G, removed cpu_relax
10  0      0 3026800  44312 1002740    0    0  1206   437  205    87  6 10 
75 10
10  0      0 2662480  45464 1360980    0    0     0 70961 1220    53  0 
100  0  0
13  0      0 2309832  46572 1707684    0    0     0 70914 1223    40  0 
100  0  0
10  0      0 1957536  46984 2054168    0    0     0 71576 1217    38  0 
100  0  0
10  0      0 1611088  47444 2395760    0    0     0 60826 1184    20  0 
100  0  0

c011bc70 __preempt_spin_lock                      220564 2757.0500
c011bd20 .text.lock.sched                          58550 203.2986
c011a0d0 __wake_up                                  1829  22.8625
c0118a70 kmap_atomic                                 890   6.9531
c0121cf0 do_softirq                                  284   1.3654
c0107020 default_idle                                132   2.0625



CONFIG file
#
# Automatically generated make config: don't edit
#
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_SWAP=y
CONFIG_UID16=y
CONFIG_GENERIC_ISA_DMA=y

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y

#
# General setup
#
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_LOG_BUF_SHIFT_17 is not set
# CONFIG_LOG_BUF_SHIFT_16 is not set
CONFIG_LOG_BUF_SHIFT_15=y
# CONFIG_LOG_BUF_SHIFT_14 is not set
# CONFIG_LOG_BUF_SHIFT_13 is not set
# CONFIG_LOG_BUF_SHIFT_12 is not set
CONFIG_LOG_BUF_SHIFT=15

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_OBSOLETE_MODPARM=y
CONFIG_KMOD=y

#
# Processor type and features
#
CONFIG_X86_PC=y
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
CONFIG_MPENTIUMIII=y
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MELAN is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_PREFETCH=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_SMP=y
# CONFIG_PREEMPT is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_NR_CPUS=16
CONFIG_X86_MCE=y
# CONFIG_X86_MCE_NONFATAL is not set
CONFIG_X86_MCE_P4THERMAL=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
CONFIG_EDD=y
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
CONFIG_HIGHPTE=y
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
CONFIG_HAVE_DEC_LOCK=y

#
# Power management options (ACPI, APM)
#
# CONFIG_PM is not set

#
# ACPI Support
#
CONFIG_ACPI=y
# CONFIG_ACPI_HT_ONLY is not set
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_DEBUG=y
CONFIG_ACPI_BUS=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y
# CONFIG_CPU_FREQ is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
# CONFIG_SCx200 is not set
# CONFIG_PCI_LEGACY_PROC is not set
CONFIG_PCI_NAMES=y
CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_HOTPLUG is not set

#
# Executable file formats
#
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=y

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
# CONFIG_PARPORT is not set

#
# Plug and Play support
#
# CONFIG_PNP is not set

#
# Block devices
#
CONFIG_BLK_DEV_FD=y
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_LBD=y

#
# ATA/ATAPI/MFM/RLL device support
#
# CONFIG_IDE is not set

#
# SCSI device support
#
CONFIG_SCSI=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y

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

#
# SCSI low-level drivers
#
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
CONFIG_SCSI_MEGARAID=y
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_CPQFCTS is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_EATA_DMA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NCR53C7xx is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_NCR53C8XX is not set
# CONFIG_SCSI_SYM53C8XX is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
CONFIG_SCSI_QLOGIC_FC=m
CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_SIM710 is not set
# CONFIG_SCSI_SYM53C416 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_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set

#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support (EXPERIMENTAL)
#
# CONFIG_IEEE1394 is not set

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Networking support
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_XFRM_USER is not set
# CONFIG_IPV6 is not set

#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set

#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
CONFIG_NETDEVICES=y

#
# ARCnet devices
#
# CONFIG_ARCNET is not set
CONFIG_DUMMY=m
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_AT1700 is not set
# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_AC3200 is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_CS89x0 is not set
# CONFIG_DGRS is not set
# CONFIG_EEPRO100 is not set
# CONFIG_E100 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_NET_POCKET is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
CONFIG_E1000=y
# CONFIG_E1000_NAPI is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
CONFIG_TIGON3=m
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Token Ring devices (depends on LLC=y)
#
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set

#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set

#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set

#
# ISDN subsystem
#
# CONFIG_ISDN_BOOL is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_INPORT is not set
# CONFIG_MOUSE_LOGIBM is not set
# CONFIG_MOUSE_PC110PAD is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_8250_CONSOLE is not set
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256

#
# I2C support
#
# CONFIG_I2C is not set

#
# I2C Hardware Sensors Mainboard support
#

#
# I2C Hardware Sensors Chip support
#

#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_QIC02_TAPE is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_INTEL_RNG=y
# CONFIG_AMD_RNG is not set
# CONFIG_NVRAM is not set
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=y
# CONFIG_AGP3 is not set
CONFIG_AGP_INTEL=y
CONFIG_AGP_VIA=y
CONFIG_AGP_AMD=y
CONFIG_AGP_SIS=y
CONFIG_AGP_ALI=y
CONFIG_AGP_SWORKS=y
# CONFIG_AGP_AMD_8151 is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
# CONFIG_RAW_DRIVER is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set

#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_AUTOFS_FS is not set
CONFIG_AUTOFS4_FS=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
CONFIG_TMPFS=y
CONFIG_RAMFS=y
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
# CONFIG_EXT2_FS_POSIX_ACL is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_XFS_FS is not set

#
# Network File Systems
#
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
CONFIG_NFSD=y
# CONFIG_NFSD_V3 is not set
# CONFIG_NFSD_TCP is not set
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
CONFIG_EXPORTFS=y
# CONFIG_CIFS is not set
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
# CONFIG_AFS_FS is not set
CONFIG_FS_MBCACHE=y
CONFIG_FS_POSIX_ACL=y

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y

#
# Native Language Support
#
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set

#
# Graphics support
#
# CONFIG_FB is not set
# CONFIG_VIDEO_SELECT is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
# CONFIG_MDA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y

#
# Sound
#
# CONFIG_SOUND is not set

#
# USB support
#
# CONFIG_USB is not set

#
# Bluetooth support
#
# CONFIG_BT is not set

#
# Profiling support
#
CONFIG_PROFILING=y
CONFIG_OPROFILE=y

#
# Kernel hacking
#
# CONFIG_DEBUG_KERNEL is not set
CONFIG_KALLSYMS=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_FRAME_POINTER=y
CONFIG_X86_EXTRA_IRQS=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y

#
# Security options
#
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
# CONFIG_CRYPTO is not set

#
# Library routines
#
# CONFIG_CRC32 is not set
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 22:12   ` Robert Macaulay
@ 2003-01-15 22:33     ` Andrew Morton
  2003-01-15 22:46       ` Robert Macaulay
  2003-01-15 23:20       ` Robert Macaulay
  0 siblings, 2 replies; 9+ messages in thread
From: Andrew Morton @ 2003-01-15 22:33 UTC (permalink / raw)
  To: Robert Macaulay; +Cc: linux-kernel

Robert Macaulay <robert_macaulay@dell.com> wrote:
>
> No change either

OK, thanks.  The below patch reverts the spinlocking change,
if you could please test that with CONFIG_PREEMPT=y

> 
> I have been hitting an odd issue, and I haven't had a chance to traceback
> to where it came from(versionwise). FS changes seem to be getting rolled
> back at times.  For example, I run make menuconfig, add my config options
> for CONFIG_MEGARAID to be built in, and recompile kernel. I install and
> reboot, and that config file, which contained CONFIG_MEGARAID=y, reverts
> back to its original state. multiple syncs seem to keep this in the 
> correct state. The filesystem that this is occuring on is ext3, mounted 
> with defaults, on a megaraid controller. I'll trace this down later and 
> post results.

Suggest that you make sure it's not some strangeness in the kernel build
system which is writing out a modified .config file.



 include/linux/spinlock.h |   56 ++++++++++++++---------------------------------
 kernel/ksyms.c           |    4 ---
 kernel/sched.c           |   47 ---------------------------------------
 3 files changed, 17 insertions(+), 90 deletions(-)

diff -puN include/linux/spinlock.h~preempt-oddity include/linux/spinlock.h
--- 25/include/linux/spinlock.h~preempt-oddity	Wed Jan 15 14:28:20 2003
+++ 25-akpm/include/linux/spinlock.h	Wed Jan 15 14:28:53 2003
@@ -85,37 +85,31 @@
  * regardless of whether CONFIG_SMP or CONFIG_PREEMPT are set. The various
  * methods are defined as nops in the case they are not required.
  */
-#define spin_trylock(lock)	({preempt_disable(); _raw_spin_trylock(lock) ? \
-				1 : ({preempt_enable(); 0;});})
+#define spin_lock(lock)	\
+do { \
+	preempt_disable(); \
+	_raw_spin_lock(lock); \
+} while(0)
 
-#define write_trylock(lock)	({preempt_disable();_raw_write_trylock(lock) ? \
+#define spin_trylock(lock)	({preempt_disable(); _raw_spin_trylock(lock) ? \
 				1 : ({preempt_enable(); 0;});})
 
-/* Where's read_trylock? */
-
-#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT)
-void __preempt_spin_lock(spinlock_t *lock);
-void __preempt_write_lock(rwlock_t *lock);
-
-#define spin_lock(lock) \
+#define spin_unlock(lock) \
 do { \
-	preempt_disable(); \
-	if (unlikely(!_raw_spin_trylock(lock))) \
-		__preempt_spin_lock(lock); \
+	_raw_spin_unlock(lock); \
+	preempt_enable(); \
 } while (0)
 
-#define write_lock(lock) \
+#define read_lock(lock)	\
 do { \
 	preempt_disable(); \
-	if (unlikely(!_raw_write_trylock(lock))) \
-		__preempt_write_lock(lock); \
-} while (0)
+	_raw_read_lock(lock); \
+} while(0)
 
-#else
-#define spin_lock(lock)	\
+#define read_unlock(lock) \
 do { \
-	preempt_disable(); \
-	_raw_spin_lock(lock); \
+	_raw_read_unlock(lock); \
+	preempt_enable(); \
 } while(0)
 
 #define write_lock(lock) \
@@ -123,19 +117,6 @@ do { \
 	preempt_disable(); \
 	_raw_write_lock(lock); \
 } while(0)
-#endif
-
-#define read_lock(lock)	\
-do { \
-	preempt_disable(); \
-	_raw_read_lock(lock); \
-} while(0)
-
-#define spin_unlock(lock) \
-do { \
-	_raw_spin_unlock(lock); \
-	preempt_enable(); \
-} while (0)
 
 #define write_unlock(lock) \
 do { \
@@ -143,11 +124,8 @@ do { \
 	preempt_enable(); \
 } while(0)
 
-#define read_unlock(lock) \
-do { \
-	_raw_read_unlock(lock); \
-	preempt_enable(); \
-} while(0)
+#define write_trylock(lock)	({preempt_disable();_raw_write_trylock(lock) ? \
+				1 : ({preempt_enable(); 0;});})
 
 #define spin_lock_irqsave(lock, flags) \
 do { \
diff -puN kernel/sched.c~preempt-oddity kernel/sched.c
--- 25/kernel/sched.c~preempt-oddity	Wed Jan 15 14:28:24 2003
+++ 25-akpm/kernel/sched.c	Wed Jan 15 14:28:53 2003
@@ -2278,50 +2278,3 @@ void __might_sleep(char *file, int line)
 #endif
 }
 #endif
-
-
-#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT)
-/*
- * This could be a long-held lock.  If another CPU holds it for a long time,
- * and that CPU is not asked to reschedule then *this* CPU will spin on the
- * lock for a long time, even if *this* CPU is asked to reschedule.
- *
- * So what we do here, in the slow (contended) path is to spin on the lock by
- * hand while permitting preemption.
- *
- * Called inside preempt_disable().
- */
-void __preempt_spin_lock(spinlock_t *lock)
-{
-	if (preempt_count() > 1) {
-		_raw_spin_lock(lock);
-		return;
-	}
-
-	while (!_raw_spin_trylock(lock)) {
-		if (need_resched()) {
-			preempt_enable_no_resched();
-			__cond_resched();
-			preempt_disable();
-		}
-		cpu_relax();
-	}
-}
-
-void __preempt_write_lock(rwlock_t *lock)
-{
-	if (preempt_count() > 1) {
-		_raw_write_lock(lock);
-		return;
-	}
-
-	while (!_raw_write_trylock(lock)) {
-		if (need_resched()) {
-			preempt_enable_no_resched();
-			__cond_resched();
-			preempt_disable();
-		}
-		cpu_relax();
-	}
-}
-#endif
diff -puN kernel/ksyms.c~preempt-oddity kernel/ksyms.c
--- 25/kernel/ksyms.c~preempt-oddity	Wed Jan 15 14:28:30 2003
+++ 25-akpm/kernel/ksyms.c	Wed Jan 15 14:28:53 2003
@@ -493,10 +493,6 @@ EXPORT_SYMBOL(do_settimeofday);
 #ifdef CONFIG_DEBUG_SPINLOCK_SLEEP
 EXPORT_SYMBOL(__might_sleep);
 #endif
-#if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT)
-EXPORT_SYMBOL(__preempt_spin_lock);
-EXPORT_SYMBOL(__preempt_write_lock);
-#endif
 #if !defined(__ia64__)
 EXPORT_SYMBOL(loops_per_jiffy);
 #endif

_


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 22:33     ` Andrew Morton
@ 2003-01-15 22:46       ` Robert Macaulay
  2003-01-15 23:20       ` Robert Macaulay
  1 sibling, 0 replies; 9+ messages in thread
From: Robert Macaulay @ 2003-01-15 22:46 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

On Wed, 15 Jan 2003, Andrew Morton wrote:
> Suggest that you make sure it's not some strangeness in the kernel build
> system which is writing out a modified .config file.

Will apply patch, but for the .config issue, the config file is correct 
after the build, then I reboot, and it goes back to its original state.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 22:33     ` Andrew Morton
  2003-01-15 22:46       ` Robert Macaulay
@ 2003-01-15 23:20       ` Robert Macaulay
  2003-01-16 11:51         ` Andrew Morton
  1 sibling, 1 reply; 9+ messages in thread
From: Robert Macaulay @ 2003-01-15 23:20 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

On Wed, 15 Jan 2003, Andrew Morton wrote:
> OK, thanks.  The below patch reverts the spinlocking change,
> if you could please test that with CONFIG_PREEMPT=y

Reverting that brings the speed back up
2.5.57, preempt on, 8gig RAM
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy 
id wa
 5  1   3624   7832 177824 7413824    0    1    16  8195  156   153  0 48 
46  5
 8  0   3624   7124 179336 7413612    0    0     0 110510 1317  2014  0 83 
10  7
 9  1   3624   8112 182552 7409316    0    1     0 109681 1309  1369  0 90  
4  6
 8  1   3624   8176 185824 7405948    0    0     0 112612 1302  2202  0 75 
17  8
10  1   3632   7328 189300 7402564    0    1     0 112160 1352  1764  0 81 
12  6


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-15 23:20       ` Robert Macaulay
@ 2003-01-16 11:51         ` Andrew Morton
  2003-01-16 16:14           ` Robert Macaulay
  0 siblings, 1 reply; 9+ messages in thread
From: Andrew Morton @ 2003-01-16 11:51 UTC (permalink / raw)
  To: Robert Macaulay; +Cc: linux-kernel

Robert Macaulay <robert_macaulay@dell.com> wrote:
>
> On Wed, 15 Jan 2003, Andrew Morton wrote:
> > if you could please test that with CONFIG_PREEMPT=y
> 
> Reverting that brings the speed back up

OK.  How irritating.

Presumably there's a fairness problem - once a CPU goes in there to start
spinning on the lock, the length of the loop is such that it's easy for
non-holders to zoom in and claim it first.  Or something.

Unless another way of solving the problem which that patch solves presents
itself we may need to revert it.

Or not.  Should a CONFIG_PREEMPT SMP kernel compromise its latency because of
overused locking??


I'd appreciate it if you could take a closer look at the mysterious
self-reverting .config, please.  See if you can work out what is causing it,
tell me how you're rebooting (reboot -f?  -fn?  Big Red Button?) and whether
the offending file is on the root filesystem, etc.


Thanks.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 2.5.57 IO slowdown with CONFIG_PREEMPT enabled
  2003-01-16 11:51         ` Andrew Morton
@ 2003-01-16 16:14           ` Robert Macaulay
  0 siblings, 0 replies; 9+ messages in thread
From: Robert Macaulay @ 2003-01-16 16:14 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

On Thu, 16 Jan 2003, Andrew Morton wrote:
> I'd appreciate it if you could take a closer look at the mysterious
> self-reverting .config, please.  See if you can work out what is causing it,
> tell me how you're rebooting (reboot -f?  -fn?  Big Red Button?) and whether
> the offending file is on the root filesystem, etc.

Seemed to vanish with 2.5.58. It was non-root filesystem, with a clean 
'reboot' shutdown. 

2.5.58 performed the same as 2.5.57 with regards to preemption on, off, 
and patched.

r


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2003-01-16 16:23 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-15 17:36 2.5.57 IO slowdown with CONFIG_PREEMPT enabled Robert Macaulay
2003-01-15 18:01 ` Andrew Morton
2003-01-15 19:18 ` Andrew Morton
2003-01-15 22:12   ` Robert Macaulay
2003-01-15 22:33     ` Andrew Morton
2003-01-15 22:46       ` Robert Macaulay
2003-01-15 23:20       ` Robert Macaulay
2003-01-16 11:51         ` Andrew Morton
2003-01-16 16:14           ` Robert Macaulay

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome