Skip to content

CPU report: Intel Atom x6212RE #4042

@jerkstorecaller

Description

@jerkstorecaller

I've been meaning to try rr for a long time, and today was that day.

I'm using an embedded system with Intel Atom x6212RE running Debian 12. When I ran rr from the apt repo (v5.3.0), I got this: [FATAL ./src/PerfCounters_x86.h:117:compute_cpu_microarch()] Intel CPU type 0x90660 unknown

This is a Tremont CPU, and I saw that rr's master branch had a IntelTremont entry but it didn't have that CPU type, so I built rr from master after adding 0x90660 to the IntelTremont switch in PerfCounters_x86.h.

The good

I tested rr on a barebone C++ Qt multi-threaded test program and it worked fine. I was able to record and replay.

$ rr replay
GNU gdb (Debian 13.1-3) 13.1
<snip>
Reading symbols from /home/user/.local/share/rr/rrtest-2/mmap_hardlink_4_rrtest...
Remote debugging using 127.0.0.1:17584
Reading symbols from /lib64/ld-linux-x86-64.so.2...
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)
BFD: warning: system-supplied DSO at 0x6fffd000 has a section extending past end of file
0x00007f31ba44cb20 in ?? () from /lib64/ld-linux-x86-64.so.2
(rr) break TestApp::runPeriodicTask
Breakpoint 1 at 0x560a206f2f2f: file testapp.cpp, line 40.
(rr) continue
Continuing.
[New Thread 12626.12627]
[New Thread 12626.12628]
[Switching to Thread 12626.12627]

Thread 2 hit Breakpoint 1, TestApp::runPeriodicTask (this=0x560a52788500) at testapp.cpp:40
40          QString randomstr = GetRandomString(10);
(rr) next
41          qDebug() << objectName() << "on thread" << ((quintptr)QThread::currentThreadId() % 1000) << "got" << randomstr
(rr) info locals
randomstr = "17RKzcmyIi"
__PRETTY_FUNCTION__ = "void TestApp::runPeriodicTask()"

The bad: many failed tests

I ran make -j$(nproc) test.

I couldn't let it finish because SSH access stopped working when it reached test 381 (mmap_huge).

$ tail -n 5 test_results.log
          Start  379: mmap_adjacent_to_rr_usage
 379/3200 Test  #379: mmap_adjacent_to_rr_usage .........................................   Passed    0.12 sec
          Start  380: mmap_adjacent_to_rr_usage-no-syscallbuf
 380/3200 Test  #380: mmap_adjacent_to_rr_usage-no-syscallbuf ...........................   Passed    0.12 sec
          Start  381: mmap_huge

$ cat test_results.log | grep Failed | wc -l
109

So of the 380/3200 tests attempted before #381 broke the OS, 109/380 failed.

Conclusion

rr seems to work on the Intel Atom x6212RE, but test suite results are awful.

To the devs, I'm not sure if you'd like me to submit a PR for PerfCounters.h, or if the test failures mean you'd rather not consider that CPU as supported. I can also try to use it more seriously with more complex programs when I have some free time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions