lkml.org 
[lkml]   [1999]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [patch] dynamic buffer cache hash table size
    Date
    > 
    > On Fri, 22 Jan 1999, Heinz Mauelshagen wrote:
    >
    > > The bad performance nearly stays the same, when the buffermem is large 8*(
    > > Only adding my artificial limitation for the buffermem to limit it
    > > to for eg. 20M is almost fine.
    >
    > Ok, now please do a crazy real hack test.
    >
    > I want you alloc 1000 pages (4mbyte of RAM) for the buffer cache hash. If
    > also that way you won't see differences I will be interested in other
    > test.
    >
    > Please start with the last patch applyed. You'll find a function called
    > my new buffer_hash_init() near line 1500 of linux/fs/buffers.c
    >
    > Plese edit this code:
    >
    > mem_pages = (mem_pages + (1<<9)) >> 9;
    >
    > and modify it to:
    >
    > mem_pages = 1000;

    Have to do that test run later, but have a look at the already existing
    one below.
    Will send you the output later

    >
    > Then recompile and reboot. If you'll still see bad performances with the
    > memory full of buffers could you please append="profile=4" in lilo.conf?
    >
    > Then reboot and tell me which are the most run functions (maybe
    > shrink_mmap?).
    >

    Ingo Molnar asked me just today for a profile.
    Most of the time is wasted in sync_buffers.

    20-30 ticks per command invocation with 8M buffermem and 500-1000!!! ticks
    with 120M buffermem.

    This is not with your 4M hack!!!
    I'll send the output with 4M hack soon.

    Regards,
    Heinz


    57697 total 0.0801
    25049 sync_buffers 54.4543
    4960 refill_freelist 27.5556
    2625 si_meminfo 19.8864
    2181 try_to_free_buffers 16.0368
    1856 __wake_up 23.2000
    1457 proc_root_lookup 4.7928
    1131 invalidate_buffers 8.8359
    1108 find_inode 21.3077
    1100 schedule 1.2673
    841 proc_lookup 3.7545
    699 do_select 1.2135
    672 system_call 12.0000
    651 find_buffer 9.5735
    617 vgacon_scroll 1.1598
    556 vgacon_set_origin 4.0882
    500 __pollwait 2.5000
    485 sys_select 0.4225
    432 __get_free_pages 0.7826
    412 d_lookup 1.8727
    393 sys_ioctl 1.0452
    342 vgacon_save_screen 3.8864
    335 do_gettimeofday 2.9911
    313 make_request 0.2038
    298 ext2_find_entry 0.4331
    287 add_timer 0.7474
    266 do_anonymous_page 1.5833
    258 get_new_inode 0.8487
    235 kmalloc 0.5817
    218 unix_poll 1.7581
    210 free_pages 0.7500
    208 lookup_dentry 0.4727
    206 free_wait 1.3205
    191 d_alloc 0.5134
    188 do_wp_page 0.3113
    181 kmem_cache_alloc 0.5387
    176 unplug_device 2.0952
    169 schedule_timeout 1.2071
    164 aic7xxx_isr 0.1168
    163 open_namei 0.2122
    160 wakeup_bdflush 1.1111
    147 filemap_nopage 0.1810
    144 __switch_to 0.7347
    129 unix_ioctl 1.0403
    125 sys_gettimeofday 0.8224
    118 restore_all 7.8667
    111 max_select_fd 0.6768
    108 kfree 0.2269
    103 permission 0.3962
    97 file_read_actor 1.2125
    93 proc_get_inode 0.3577
    89 get_empty_filp 0.3771
    87 sock_poll 2.1750
    85 filp_open 0.3427
    84 page_fault 7.0000
    82 real_lookup 0.6613
    80 proc_read_inode 0.2740
    74 clean_inode 0.7708
    72 add_request 0.1017
    68 __free_page 0.2931
    66 do_follow_link 0.5000
    64 iget 0.4103
    63 pipe_poll 0.7875
    63 insert_into_queues 0.2316
    63 getblk 0.1167
    62 sys_open 0.3690
    62 kmem_cache_free 0.1505
    62 handle_IRQ_event 0.4429
    57 fput 0.7917
    56 ll_rw_block 0.0864
    55 block_write 0.0386
    53 sys_write 0.1815
    52 sock_ioctl 1.3000
    52 proc_statfs 0.4815
    50 handle_mm_fault 0.1025
    49 do_page_fault 0.0592
    48 sock_readv_writev 0.3243
    47 file_ioctl 0.2217
    47 dput 0.1433
    45 block_read 0.0342
    44 unix_shutdown 0.3667
    44 sys_nanosleep 0.1196
    44 sync_old_buffers 0.1038
    42 unix_stream_recvmsg 0.0439
    42 init_proc_fs 1.7500
    40 get_unused_fd 0.2222
    39 unix_stream_sendmsg 0.0617
    38 si_swapinfo 0.2436
    38 put_unused_buffer_head 0.5000
    36 zap_page_range 0.0796
    36 sys_read 0.1385
    35 ret_from_sys_call 2.0588
    35 ext2_permission 0.1535
    34 proc_permission 0.1809
    34 del_timer 0.3864
    32 remove_from_queues 0.1067
    32 do_no_page 0.1176
    30 refile_buffer 0.1829
    30 mark_buffer_uptodate 0.3571
    30 clear_page_tables 0.1415
    29 vt_console_print 0.0382
    27 math_state_restore 0.4821
    26 d_delete 0.2407
    25 do_fork 0.0115
    25 d_rehash 0.3289
    24 put_write_access 2.0000
    24 copy_page_range 0.0469
    23 sys_llseek 0.0676
    23 getname 0.1597
    23 do_autoconfig 0.1742
    22 reserved_lookup 0.3056
    22 get_unused_buffer_head 0.1341
    21 do_con_trol 0.0049
    21 do_bottom_half 0.1250
    21 __release_sock 0.1641
    20 get_empty_inode 0.1064
    20 find_vma 0.2000
    20 do_mmap 0.0202
    19 strncpy_from_user 0.2375
    19 grow_inodes 0.0448
    19 get_hash_table 0.5938
    19 device_not_available 0.3167
    18 exec_modprobe 0.0484
    18 d_alloc_root 0.3000
    18 cached_lookup 0.2368
    17 vt_ioctl 0.0023
    17 number 0.0373
    17 error_code 0.3269
    16 tcp_listen_poll 0.1739
    16 sys_wait4 0.0173
    16 pipe_ioctl 0.4000
    16 ext2_update_inode 0.0200
    16 ext2_count_free 0.2000
    16 d_instantiate 0.3636
    16 cp_new_stat 0.0563
    16 copy_strings 0.0367
    16 alloc_skb 0.0606
    16 __namei 0.1739
    15 shrink_dcache_memory 1.2500
    15 copy_files 0.0421
    15 bdflush 0.0247
    14 sys_sigprocmask 0.0376
    14 sync_inodes 0.0479
    14 ret_with_reschedule 0.8750
    13 sys_brk 0.0406
    13 proc_delete_dentry 0.4643
    13 inet_shutdown 0.1121
    13 do_generic_file_read 0.0084
    13 __wait_on_buffer 0.0433
    12 shm_unuse 0.1364
    12 set_modem_info 0.0469
    12 select_dcache 0.0448
    12 rs_break 0.1579
    12 merge_segments 0.0330
    12 exit_notify 0.0201
    12 create_buffers 0.0238
    11 sys_close 0.0887
    11 synchronize_bh 0.1447
    11 set_writetime 0.1719
    11 set_selection 0.0070
    11 reset_terminal 0.0205
    11 ext2_getblk 0.0198
    11 __get_request_wait 0.0229
    11 __brelse 0.2115
    10 sys_newfstat 0.0595
    10 init_buffer 0.1667
    10 grow_buffers 0.0379
    9 sync_block 0.0511
    8 wake_up_process 0.0500
    8 sys_nfsservctl 0.0645
    8 sock_sendmsg 0.0455
    8 inode_getblk 0.0171
    8 do_munmap 0.0139
    8 clear_user 0.1111
    8 __global_restore_flags 0.1111
    8 __get_user_2 0.2857
    7 sys_newstat 0.0473
    7 sys_lseek 0.0312
    7 sprintf 0.0018
    7 sock_alloc_send_skb 0.0417
    7 set_serial_info 0.0061
    7 insert_vm_struct 0.0197
    7 ext2_check_dir_entry 0.0389
    7 __get_user_4 0.2917
    6 update_atime 0.0600
    6 sock_wmalloc 0.0789
    6 sock_recvmsg 0.0349
    6 rs_interrupt_single 0.0063
    6 get_serial_info 0.0294
    6 get_irq_list 0.0179
    6 ext2_readdir 0.0042
    6 close_fp 0.0600
    6 __kfree_skb 0.0366
    5 vm_enough_memory 0.0391
    5 unix_dgram_sendmsg 0.0082
    5 tcp_poll 0.0208
    5 tcp_find_established 0.0735
    5 sys_writev 0.0245
    5 sys_sigaction 0.0195
    5 sock_write 0.0305
    5 sock_read 0.0312
    5 simple_strtoul 0.0329
    5 set_blocksize 0.0132
    5 old_mmap 0.0179
    5 kmem_cache_grow 0.0054
    5 generic_file_read 0.0391
    5 find_vma_prev 0.0260
    5 ext2_new_block 0.0021
    5 do_exit 0.0076
    5 brw_page 0.0053
    4 sock_rfree 0.2000
    4 locks_remove_posix 0.0270
    4 load_elf_binary 0.0014
    4 iput 0.0071
    4 inet_poll 0.0909
    4 get_unmapped_area 0.0370
    4 get_modem_info 0.0250
    4 ext2_check_blocks_bitmap 0.0059
    4 de_get 0.3333
    4 __udelay 0.0455
    4 __put_user_1 0.2000
    3 tcp_readable 0.0179
    3 sys_newlstat 0.0203
    3 sys_munmap 0.0259
    3 sys_getdents 0.0082
    3 sock_wfree 0.0938
    3 sock_release 0.0375
    3 show_net_buffers 0.0441
    3 release 0.0082
    3 put_page 0.0750
    3 printk 0.0077
    3 print_hostbyte 0.0268
    3 mod_timer 0.0074
    3 kfree_skbmem 0.0441
    3 ip_getsockopt 0.0033
    3 get_kstat 0.0050
    3 generic_file_mmap 0.0183
    3 flush_old_exec 0.0063
    3 ext2_read_inode 0.0031
    3 ext2_alloc_block 0.0093
    3 exit_mmap 0.0112
    3 do_syslog 0.0048
    3 do_readv_writev 0.0060
    3 do_pipe 0.0084
    3 default_llseek 0.0250
    3 change_speed 0.0029
    3 bread 0.0221
    3 __put_user_2 0.1071
    3 __generic_copy_to_user 0.0500
    2 unmap_fixup 0.0069
    2 unix_stream_write_space 0.0312
    2 timer_bh 0.0022
    2 sys_fstat 0.0119
    2 sys_access 0.0079
    2 sync_supers 0.0161
    2 strtok 0.0200
    2 startup_32 0.0122
    2 setup_frame 0.0043
    2 sel_pos 0.0357
    2 scsicam_bios_param 0.0085
    2 rs_unthrottle 0.0185
    2 rs_throttle 0.0217
    2 ret_from_exception 0.1250
    2 restore_sigcontext 0.0050
    2 reschedule 0.1667
    2 put_dirty_page 0.0054
    2 prune_dcache 0.0089
    2 memcpy_toiovec 0.0200
    2 load_elf_interp 0.0029
    2 is_read_only 0.0385
    2 init_private_file 0.0208
    2 get_process_array 0.0125
    2 get_pid 0.0066
    2 fs_may_remount_ro 0.0250
    2 free_page_and_swap_cache 0.0208
    2 flush_signal_handlers 0.0333
    2 filldir 0.0152
    2 ext2_free_blocks 0.0027
    2 ext2_file_write 0.0017
    2 ext2_bmap 0.0034
    2 count 0.0455
    2 copy_thread 0.0098
    2 aic7xxx_setup 0.0023
    2 __wait_on_page 0.0068
    2 __get_user_1 0.1000
    1 write_inode_now 0.0041
    1 vcs_scr_writew 0.0192
    1 vc_resize 0.0009
    1 unix_gc 0.0009
    1 unix_dgram_recvmsg 0.0030
    1 try_to_free_inodes 0.0104
    1 trunc_indirect 0.0014
    1 trunc_direct 0.0032
    1 sys_unlink 0.0043
    1 sys_time 0.0312
    1 sys_stat 0.0068
    1 sys_setpgid 0.0042
    1 sys_personality 0.0061
    1 sys_newuname 0.0086
    1 sys_execve 0.0074
    1 sys_dup2 0.0024
    1 sys_chdir 0.0068
    1 sync_indirect 0.0071
    1 sync_iblock 0.0109
    1 start_tty 0.0069
    1 sock_wake_async 0.0109
    1 sock_fasync 0.0037
    1 shrink_dcache_sb 0.0034
    1 setup_arg_pages 0.0037
    1 set_mtrr_done 0.0156
    1 set_device_ro 0.0114
    1 send_sig_info 0.0015
    1 search_binary_handler 0.0035
    1 scsi_proc_info 0.0005
    1 save_i387 0.0093
    1 rs_write_room 0.0357
    1 rs_start 0.0147
    1 rs_chars_in_buffer 0.0625
    1 ret_from_intr 0.0312
    1 request_module 0.0025
    1 release_segments 0.0357
    1 read_exec 0.0027
    1 read_284x_seeprom 0.0007
    1 put_filp 0.0192
    1 proc_delete_inode 0.0227
    1 pipe_write 0.0018
    1 pipe_read 0.0027
    1 new_page_tables 0.0049
    1 n_tty_receive_buf 0.0003
    1 memcpy_tokerneliovec 0.0125
    1 memcpy_fromiovec 0.0100
    1 locks_remove_flock 0.0069
    1 load__block_bitmap 0.0027
    1 interruptible_sleep_on 0.0057
    1 insert_file_free 0.0250
    1 in_group_p 0.0156
    1 grab_task 0.0076
    1 get_root_array 0.0023
    1 get_hardblocksize 0.0278
    1 get_fops 0.0093
    1 generic_readpage 0.0071
    1 forget_segments 0.0250
    1 ext2_get_group_desc 0.0069
    1 ext2_file_lseek 0.0076
    1 ext2_delete_entry 0.0086
    1 ext2_add_entry 0.0013
    1 exit_sighand 0.0119
    1 do_sigaction 0.0029
    1 do_setitimer 0.0034
    1 do_execve 0.0021
    1 csi_X 0.0076
    1 cp_old_stat 0.0045
    1 copy_segments 0.0069
    1 con_font_op 0.0013
    1 clear_inode 0.0125
    1 block_getblk 0.0015
    1 bcopy 0.0250
    1 bad_get_user 0.1250
    1 avl_rebalance 0.0027
    1 array_read 0.0018
    1 __mark_inode_dirty 0.0104
    1 __global_cli 0.0033
    1 __generic_copy_from_user 0.0167


    --

    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

    Systemmanagement Entwicklungsbereich 2 Deutsche Telekom AG
    Entwicklungszentrum Darmstadt
    Heinz Mauelshagen Otto-Roehm-Strasse 71c
    Postfach 10 05 41
    mge@ez-darmstadt.telekom.de 64205 Darmstadt
    Germany
    +49 6151 886-425
    FAX-386
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:49    [W:0.052 / U:90.572 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site