IoT Raspberry Pi 2 — принудительная нагрузка на него

Мой проект состоит из измерения температуры при различных «нагрузках», возложенных на способность raspberry pi, чтобы увидеть, повлияет ли «усиленная» работа raspberry на вход датчика температуры. Я использую Windows 10 на своей модели Raspberry Pi 2 B, и у меня возникли проблемы с поиском достаточного количества источников об этом, поэтому я спрашиваю здесь.

  • Можно ли как-то программно нагрузить малину из Visual Studio как универсальное приложение для малины, возможно, заставить ее увеличить использование доступной оперативной памяти или, возможно, ограничить ее? Если да, то что было бы лучшим решением для этого?

  • Есть ли способ программно проверить, сколько оперативной памяти он использует в целом, с помощью уже реализованных функций в проекте универсального приложения?

  • Есть ли другой способ «нагрузить» малину и измерить, какую нагрузку вы заставляете ее работать?

Любая помощь очень ценится, заранее спасибо за усилия, приложенные для ответа на эти вопросы!


person Hansrutger    schedule 26.10.2016    source источник
comment
Это легко сделать на С++.   -  person Rita Han    schedule 26.10.2016
comment
И как именно это будет сделано?   -  person Hansrutger    schedule 26.10.2016


Ответы (1)


Есть ли способ программно проверить, сколько оперативной памяти он использует в целом, с помощью уже реализованных функций в проекте универсального приложения?

Нет прямого API для получения общего объема используемой оперативной памяти, но вы можете получить доступную оперативную память, которая будет использоваться в С#, сделайте это следующим образом:

    [StructLayout(LayoutKind.Sequential)]
    private class MEMORYSTATUSEX
    {
        public uint dwLength;
        public uint dwMemoryLoad;
        public ulong ullTotalPhys;
        public ulong ullAvailPhys;
        public ulong ullTotalPageFile;
        public ulong ullAvailPageFile;
        public ulong ullTotalVirtual;
        public ulong ullAvailVirtual;
        public ulong ullAvailExtendedVirtual;
        public MEMORYSTATUSEX()
        {
            this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
        }
    }

    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer); 

    // Alternate Version Using "ref," And Works With Alternate Code Below.
    // Also See Alternate Version Of [MEMORYSTATUSEX] Defined As A Structure. 
    [return: MarshalAs(UnmanagedType.Bool)]
    [DllImport("kernel32.dll", EntryPoint = "GlobalMemoryStatusEx", SetLastError = true)]
    static extern bool _GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer);

    void GetProcessUsage()
    {
        MEMORYSTATUSEX data = new MEMORYSTATUSEX();

        GlobalMemoryStatusEx(data);

        System.Diagnostics.Debug.WriteLine(data.ullTotalPageFile + "\t\t" + data.ullAvailPageFile);
    }

Есть ли другой способ «нагрузить» малину и измерить, какую нагрузку вы заставляете ее работать?

Вы можете попробовать это:

        List<byte[]> list = new List<byte[]>();

        while (true)
        {
            var buf = new byte[1024 * 1024 * 50];
            list.Add(buf);
            System.Diagnostics.Debug.WriteLine("Allocating memory");
            await Task.Delay(1000);
        }

Память, которую можно использовать для приложения, составляет 390 МБ Raspberry Pi 3 с 1 ГБ ОЗУ. Для моделей на 512 МБ кажется 185 МБ. Вы можете использовать Windows.System.MemoryManager. AppMemoryUsageLimit для подтверждения вашего устройства.

person Rita Han    schedule 28.10.2016