Opened 16 months ago

Last modified 8 weeks ago

#8990 new bug

Performance tests behave differently depending on presence of .hi file (even with -fforce-recomp)

Reported by: ezyang Owned by:
Priority: normal Milestone:
Component: Test Suite Version: 7.9
Keywords: newcomer Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Revisions:

Description

Example:

[ezyang@hs01 compiler]$ cat T6048.comp.stats  
/home/hs01/ezyang/ghc-compalloc/inplace/lib/bin/ghc-stage2 -B/home/hs01/ezyang/ghc-compalloc/inplace/lib -fforce-recomp -dno-debug-output -no-user-package-db -rtsopts -fno-ghci-history -c T6048.hs -O -fasm +RTS -V0 -tT6048.comp.stats --machine-readable 
 [("bytes allocated", "119871672")
 ,("num_GCs", "100")
 ,("average_bytes_used", "4388904")
 ,("max_bytes_used", "12539576")
 ,("num_byte_usage_samples", "7")
 ,("peak_megabytes_allocated", "27")
 ,("init_cpu_seconds", "0.00")
 ,("init_wall_seconds", "0.00")
 ,("mutator_cpu_seconds", "0.09")
 ,("mutator_wall_seconds", "0.10")
 ,("GC_cpu_seconds", "0.15")
 ,("GC_wall_seconds", "0.15")
 ]
[ezyang@hs01 compiler]$ rm T6048.hi
[ezyang@hs01 compiler]$ '/home/hs01/ezyang/ghc-compalloc/inplace/bin/ghc-stage2' -fforce-recomp -dno-debug-output -no-user-package-db -rtsopts -fno-ghci-history -c T6048.hs -O -fasm  +RTS -V0 -tT6048.comp.stats --machine-readable -RTS
[ezyang@hs01 compiler]$ cat T6048.comp.stats
/home/hs01/ezyang/ghc-compalloc/inplace/lib/bin/ghc-stage2 -B/home/hs01/ezyang/ghc-compalloc/inplace/lib -fforce-recomp -dno-debug-output -no-user-package-db -rtsopts -fno-ghci-history -c T6048.hs -O -fasm +RTS -V0 -tT6048.comp.stats --machine-readable 
 [("bytes allocated", "121022912")
 ,("num_GCs", "100")
 ,("average_bytes_used", "4022069")
 ,("max_bytes_used", "11224944")
 ,("num_byte_usage_samples", "7")
 ,("peak_megabytes_allocated", "25")
 ,("init_cpu_seconds", "0.00")
 ,("init_wall_seconds", "0.00")
 ,("mutator_cpu_seconds", "0.09")
 ,("mutator_wall_seconds", "0.11")
 ,("GC_cpu_seconds", "0.15")
 ,("GC_wall_seconds", "0.14")
 ]

It's a slight but present difference: I noticed because one of the perf tests was failing on an initial run of the test suite, but passing when I re-ran it.

There are two possible bugs here. One is that our implementation of -fforce-recomp is buggy and we shouldn't be reading in the hi file at all if -fforce-recomp is on; the other is that we should always clean up interface files before running one of these perf tests.

Change History (2)

comment:1 Changed 16 months ago by simonpj

Yes, I expect that we are reading the old interface file even if -fforce-recomp is on. It's a bit of a corner case, but I'd be happy to see it fixed if someone would like to construct a patch to stop that happening, and it's not too painful in code terms.

Simon

comment:2 Changed 4 months ago by thomie

  • Keywords newcomer added

Look in the compiler/main directory. Grep for ForceRecomp. Try to figure out what's going on (will take you a while).

Tickets #4114 and #2258 are related.

Last edited 8 weeks ago by thomie (previous) (diff)
Note: See TracTickets for help on using tickets.