[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

New JFFS2 blocking results with compression turned off



Same config as last test- Task not interacting with JFFS2 directly, but
other background activity filling up jffs2 partition.
This time compression was turned off.

Here are the results (an order of magnitude improvement in performance):

http://www.embeddedlinuxworks.com/jitterTest6.jpg

Some profiles alow follow. The question is: When JFFS is doing its
stuff, why are other system tasks blocked?

Will ther kernel not schedule pending tasks if a -say- write() called by
another driver has not returned?

If this is the case, then it may be better to trigger the GC and return
0 bytes written to the write call that causes GC to happen (thus asking
for a retry).

This should make the system much more responsive and less "blocking".

But I wonder what other programs will break that don't expect write() to
return less than the bytes requested to be written- even though that is
correct functionality.

Maybe we can make it a compile time option. Take your pick- low worst
case latencies or historic write() compatability!

Vipin

*********** console log + their readprofile's at some selected worst
case blocking times *******************************
<snip>
 99.922000 ms   -0.078000 ms
 411.612000 ms   311.612000 ms!<Profile saved in
file:JitterTest.profilesnap-0>
/dev/mtdblock1            8192      7012      1180  86% /mnt/jffs1
 218.391000 ms   118.391000 ms
 99.984000 ms   -0.016000 ms
<snip>

[root@xxxxxxx.profilesnap-0 -m
/boot/linux-2.4.5-JFFS2.System.map
     4 startup_32                                 0.0242
     1 printk                                     0.0024
     1 init_buffer_head                           0.0179
     1 write_profile                              0.0179
     1 jffs2_commit_write                         0.0007
     1 jffs2_add_full_dnode_to_fraglist           0.0018
     1 jffs2_garbage_collect_pass                 0.0009
     1 jffs2_garbage_collect_dnode                0.0008
     2 do_write_oneword                           0.0026
     1 cfi_amdstd_write                           0.0009
     1 physmap_write32                            0.0500
    25 __delay                                    0.6250
     1 __udelay                                   0.0179
     2 __generic_copy_to_user                     0.0333
    43 total                                      0.0000

<snip>
 99.955000 ms   -0.045000 ms
 467.321000 ms   367.321000 ms!<Profile saved in
file:JitterTest.profilesnap-1>
 222.866000 ms   122.866000 ms
 99.900000 ms   -0.100000 ms
 99.957000 ms   -0.043000 ms
 108.980000 ms   8.980000 ms
 109.294000 ms   9.294000 ms
 91.744000 ms   -8.256000 ms
 100.000000 ms   0.000000 ms
 99.973000 ms   -0.027000 ms
 100.007000 ms   0.007000 ms
/dev/mtdblock1            8192      7032      1160  86% /mnt/jffs1
 99.995000 ms   -0.005000 ms
<snip>

[root@xxxxxxx.profilesnap-1 -m
/boot/linux-2.4.5-JFFS2.System.map
     4 startup_32                                 0.0242
     1 __wake_up                                  0.0058
     3 printk                                     0.0073
     1 generic_file_write                         0.0007
     1 kmalloc                                    0.0071
     1 write_profile                              0.0179
     1 jffs2_commit_write                         0.0007
     1 jffs2_add_full_dnode_to_fraglist           0.0018
     3 jffs2_garbage_collect_pass                 0.0028
     2 jffs2_garbage_collect_dnode                0.0016
     1 do_write_oneword                           0.0013
     1 cfi_amdstd_write                           0.0009
     4 physmap_copy_from                          0.0909
    24 __delay                                    0.6000
     1 __udelay                                   0.0179
     3 __generic_copy_to_user                     0.0500
    52 total                                      0.0000

<snip>
 100.011000 ms   0.011000 ms
 1519.125000 ms   1419.125000 ms!<Profile saved in
file:JitterTest.profilesnap-5>
 1310.865000 ms   1210.865000 ms
 100.002000 ms   0.002000 ms
 100.002000 ms   0.002000 ms
/dev/mtdblock1            8192      7224       968  88% /mnt/jffs1
 99.980000 ms   -0.020000 ms
<snip>

[root@xxxxxxx.profilesnap-5 -m
/boot/linux-2.4.5-JFFS2.System.map
     4 startup_32                                 0.0242
     1 system_call                                0.0156
     4 __wake_up                                  0.0233
    15 printk                                     0.0364
     1 path_walk                                  0.0005
     1 write_profile                              0.0179
     1 jffs2_add_physical_node_ref                0.0019
     4 jffs2_add_full_dnode_to_fraglist           0.0072
     2 jffs2_garbage_collect_pass                 0.0019
     9 jffs2_garbage_collect_dnode                0.0072
    15 do_write_oneword                           0.0192
     1 cfi_amdstd_write                           0.0009
     2 physmap_copy_from                          0.0455
     2 physmap_write32                            0.1000
    90 __delay                                    2.2500
     4 __udelay                                   0.0714
     1 __generic_copy_to_user                     0.0167
   157 total                                      0.0001


<snip>
 99.967000 ms   -0.033000 ms
 2291.651000 ms   2191.651000 ms!<Profile saved in
file:JitterTest.profilesnap-8>
 238.353000 ms   138.353000 ms
 99.999000 ms   -0.001000 ms
 100.027000 ms   0.027000 ms
 99.996000 ms   -0.004000 ms
 100.032000 ms   0.032000 ms
 99.942000 ms   -0.058000 ms
 100.010000 ms   0.010000 ms
 100.129000 ms   0.129000 ms
/dev/mtdblock1            8192      8092       100  99% /mnt/jffs1
 116.456000 ms   16.456000 ms
<snip>

[root@xxxxxxx.profilesnap-8 -m
/boot/linux-2.4.5-JFFS2.System.map
     4 startup_32                                 0.0242
     5 __wake_up                                  0.0291
     1 do_syslog                                  0.0014
    18 printk                                     0.0437
     1 generic_file_write                         0.0007
     1 write_profile                              0.0179
    11 jffs2_add_full_dnode_to_fraglist           0.0199
     8 jffs2_garbage_collect_pass                 0.0076
     6 jffs2_garbage_collect_dnode                0.0048
    16 do_write_oneword                           0.0205
     7 cfi_amdstd_write                           0.0062
     3 physmap_read32                             0.1875
     5 physmap_copy_from                          0.1136
     4 physmap_write32                            0.2000
   132 __delay                                    3.3000
    12 __udelay                                   0.2143
     2 __generic_copy_to_user                     0.0333
   236 total                                      0.0002




To unsubscribe from this list: send the line "unsubscribe jffs-dev" in
the body of a message to majordomo@xxxxxxx.com