This is an archive of the discontinued LLVM Phabricator instance.

[analyzer][tests] Add a notion of project sizes
ClosedPublic

Authored by vsavchenko on Jul 16 2020, 5:11 AM.

Details

Summary

Whith the number of projects growing, it is important to be able to
filter them in a more convenient way than by names. It is especially
important for benchmarks, when it is not viable to analyze big
projects 20 or 50 times in a row.

Because of this reason, this commit adds a notion of sizes and a
filtering interface that puts a limit on a maximum size of the project
to analyze or benchmark.

Sizes assigned to the projects in this commit, do not directly
correspond to the number of lines or files in the project. The key
factor that is important for the developers of the analyzer is the
time it takes to analyze the project. And for this very reason,
"size" basically helps to cluster projects based on their analysis
time.

Diff Detail

Event Timeline

vsavchenko created this revision.Jul 16 2020, 5:11 AM
Herald added a project: Restricted Project. Β· View Herald TranscriptJul 16 2020, 5:11 AM

I don't speak snek, but I approve this message!

Its also great that we have dedicated tiny/small projects to analyze locally.

clang/utils/analyzer/ProjectMap.py
31

Just an observation rather then a suggestion, its interesting that we don't have a MEDIUM size in between SMALL and BIG. I think the TINY category describes the sub-minute runs well, and it'd be awkward to introduce a project in between SMALL and BIG, so I don't immediately see a time interval we need to categorize.

I suppose LLVM could be a HUGE project?

vsavchenko marked an inline comment as done.Jul 16 2020, 7:24 AM

I don't speak snek, but I approve this message!

Thanks 😊

I suppose LLVM could be a HUGE project?

Yurp, LLVM, pytorch, (surprisingly!) CMake

clang/utils/analyzer/ProjectMap.py
31

Yeah, maybe it's good to add MEDIUM with 10min-30min

NoQ added a comment.Jul 16 2020, 10:23 AM

Sizes assigned to the projects in this commit, do not directly
correspond to the number of lines or files in the project.

Maybe QUICK/NORMAL/SLOW then? Or by purpose: BENCHMARK/DAILY/PARANOID?

In D83942#2156320, @NoQ wrote:

Sizes assigned to the projects in this commit, do not directly
correspond to the number of lines or files in the project.

Maybe QUICK/NORMAL/SLOW then? Or by purpose: BENCHMARK/DAILY/PARANOID?

I am not against the idea of naming it differently, but then we need to get all whereabouts vocabulary straight. What is the noun? Speed? And what should be the command line option?

Make --projects and --max-size compatible

vsavchenko updated this revision to Diff 283548.Aug 6 2020, 2:56 AM

Keep SATest.py Python2 compatible

NoQ accepted this revision.Aug 7 2020, 4:57 PM

I can't say any of my ideas about better naming are exceptionally bright. The existing scale seems perfectly reasonable.

This revision is now accepted and ready to land.Aug 7 2020, 4:57 PM
This revision was landed with ongoing or failed builds.Aug 24 2020, 6:13 AM
This revision was automatically updated to reflect the committed changes.