I'm using SNMP to get Server Infomation.
I want to get CPU/Process type, for example : Intel (R) Pentium (R) Dual CPU E2180 # 2.00GHz
I try very hard but I can't find suitable OID.
Can't anyone help me?
P/s : sorry about my lack Eng ability
The sysDescr table usually (but not always) contains information related to the machine's hardware, CPU included. However you should definitely take a look at the hrDevice table where the hrDeviceType is hrDeviceProcessor, here is what I get querying my laptop:
snmpwalk -v 2c -c ******* 192.168.*.* 1.3.6.1.2.1.25.3.2.1
HOST-RESOURCES-MIB::hrDeviceDescr.768 = STRING: GenuineIntel: Intel(R) Core(TM) i3 CPU M 330 # 2.13GHz
Related
Due to temp (hopefully) financial problems I have to use old laptop. It's FSB (Front Side Bridge) clock is 333MHz (https://www.techsiting.com/mt-s-vs-mhz/). It has 2 SO-DIMM slots for DDR2 SDRAM. It had only 1 DIMM 2 Gb previously and it was a nightmare.
Each slot can handle maximum 2Gb so maximum amount of memory is 4Gb. Knowing that supported DDR stands for double data ratio, I've bought for funny money (10 euro) 2 DDR2 DIMM SO-DIMM 800MHz hoping to get (assuming memory divider is 1:2 - it's a double data ratio, isn't it?) 2x333MHz->apply divider=667MT/s (no idea how they have avoided 666). As I have Core2Duo I even had a very little hope to get 4x333MHz=1333MT/s.
But it seems that my memory divider is 1:1, so I get either
2x333MHzxDivider=333MT/s
4x333MHzxDivider=?
And utilities like lshw and dmidecode seem to confirm that:
~ >>> sudo lshw -C memory | grep clock
clock: 333MHz (3.0ns) # notice 333MHz here
clock: 333MHz (3.0ns) # notice 333MHz here
~ >>> sudo dmidecode --type memory | grep Speed
Supported Speeds:
Current Speed: Unknown
Current Speed: Unknown
Speed: 333 MT/s # notice 333MT/s here
Speed: 333 MT/s # notice 333MT/s here
~ >>>
So my 333MHz on FSB has been multiplied by 1 (one) and I've got 333MT/s (if I understood correct). I'm still satisfied: OS does not swap that much, boot process is faster, programs starts faster, browser does not hang every hour and I can open much more tabs). I just want to know, since I have Core2Duo what **MT/s8*8 do I have from these two? Or maybe it is even more comlicated?
2x333MHzxDivider=333MT/s
4x333MHzxDivider=667MT/s # 4 because of Duo
and is there any difference for 2 processors system with just 4Gb of RAM with MT\s == MHz?
PS BIOS is old (although latest) and I cannot see real FSB clock there, nor change it nor change the memory divider.
Looks like there's no point in checking I/O bus clock using some Linux command/tool because it is just always half of memory clock.
if what is written in electronics.stackexchange.com/a/424928:
I/O bus clock is always half of bus data rate.
my old machine has these parameters:
It is DDR2-333 (not standardized by JEDEC since they start from DDR-400)
It has memory MHz = 333
It has memory MT/s = 333
It has I/O bus MHz = 166.5 # just because
The thing I still don't get is that I have Core2Duo, so is my memory MT/s = 333 or 666.
In Delphi, we need to know the number of CPUs for parallelization. Until now, we have used the GetNativeSystemInfo() function, which has worked fine, also with servers with hyperthreading.
But now, we have a server (Intel Xeon Gold 6230) with 40 physical processors and 80 logical processors with hyperthreading, and GetNativeSystemInfo() only shows 40 CPUs.
We made a small test program that uses 3 calls:
GetNativeSystemInfo()
GetLogicalProcessorInformation() (code from How to detect number of logical and physical processors efficiently?)
And looking into the Registry for number of CPUs:
Computer\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor
For all of our servers, these 3 calls give the same number of CPUs:
But for the Intel Xeon, only the Registry gives us the 80 CPUs:
Does anybody know why it is not working for the Intel server, or know a way to be sure to get the max number of CPUs?
In GetLogicalProcessorInformation documentation I found this part:
On systems with more than 64 logical processors, the
GetLogicalProcessorInformation function retrieves logical processor
information about processors in the processor group to which the
calling thread is currently assigned. Use the
GetLogicalProcessorInformationEx function to retrieve information
about processors in all processor groups on the system.
So try using GetLogicalProcessorInformationEx.
To query logical processor count greater than 64, you have to use the newer GetLogicalProcessorInformationEx API, which the NumCPULib4Pascal library wraps in an easy-to-use manner.
Unfortunately, I can't paste the full code here because it won't fit the word limit of StackOverflow.
Sample usage below:
uses
NumCPULib;
var
lcc, pcc: Int32;
begin
// count logical cpus
lcc := TNumCPULib.GetLogicalCPUCount();
// count physical cpus
pcc := TNumCPULib.GetPhysicalCPUCount();
end;
I worked with megafunctions to generate 32bit data memory in the fpga.but the output was addressed 32bit (4 bytes) at time , how to do 1 byte addressing ?
i have Altera Cyclone IV ep4ce6e22c8.
I'm designing a 32bit CPU in fpga ,
Nowadays every CPU address bus works in bytes. Thus to access your 32-bit wide memory you should NOT connect the LS 2 address bits. You can use the A[1:0] address bits to select a byte (or half word using A[1] only) from the memory when your read.
You still will need four byte write enable signals. This allows you to write word, half-words or bytes.
Have a look at existing CPU buses or existing connection standards like AHB or AXI.
Post edit:
but reading address 0001 , i get 0x05060708 but the desired value is 0x02030405.
What you are trying to do is read a word from a non-aligned address. There is no existing 32-bit wide memory that supports that. I suggest you have a look at how a 32-bit wide memory works.
The old Motorola 68020 architecture supported that. It requires a special memory controller which first reads the data from address 0 and then from address 4 and re-combines the data into a new 32-bit word.
With the cost of memory dropping and reducing CPU cycles becoming more important, no modern CPU supports that. They throw an exception: non-aligned memory access.
You have several choices:
Build a special memory controller which supports unaligned accesses.
Adjust your expectations.
I would go for the latter. In general it is based on the wrong idea how a memory works. As consolidation: You are not the first person on this website who thinks that is how you read words from memory.
When i checked prometheus custom metrics, i see container_memory_cache but container level memory buffer data is not available.. When i run vmstat -S M command.. i can get buffered memory as below. But in kubernetes architecture, running this command on each pods will be wasting resources.. Is there any alternative way to get these datas for each pods?In addition to that, vmstat metrics also do not have buffered memory data too... Any idea? Thanks
vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 0 456 2 19594 0 0 6 39 4 3 7 5 87 0 0
You can find a lot of information regarding container memory usage in cgroups, for example
/sys/fs/cgroup/memory/docker/{id}/memory.stat
Such files could be accessed from node OS and will provide you with all available information regarding container memory usage.
However, as far as I understand, buffered memory is not available inside containers to avoid double caching by node OS and container itself.
I have a huge hash containing about 10 years worth of daily statistical data. Is there is a way in Perl 6 to determine how much real memory (in bytes) this hash is using (e.g. showMemoryUsed(%myBigHash)). Even if %myBigHash is empty, it is not zero bytes because of the memory used and the Perl 6 implementation of the hash data type. This info will tell me if I need to re-implement my codes or periodically write out to file to alleviate RAM shortage (my program is running on a virtualized Linux with 2G RAM).
Thanks.
Alas, we don't have a thing like that in Rakudo Perl 6 yet. The only thing I can recommend, is using the Telemetry module:
use Telemetry;
my $before = T<max-rss>;
my %h = ...; # initialize hash
say "Memory usage grew { T<max-rss> - $before } KB";
Check out the Telemetry documentation for more information: https://docs.raku.org/type/Telemetry